首頁 >後端開發 >Golang >如何使用Go和http.Transport進行WebSocket通訊?

如何使用Go和http.Transport進行WebSocket通訊?

王林
王林原創
2023-07-21 18:49:14843瀏覽

如何使用Go和http.Transport進行WebSocket通訊?

WebSocket 是一種在網路應用中,提供雙向通訊的協定。它允許伺服器主動向客戶端推送訊息,而不需要客戶端先發起請求。在Go語言中,可以使用http.Transport來建立和管理WebSocket連線。

下面是一個使用Go和http.Transport進行WebSocket通訊的範例程式碼:

package main

import (
    "fmt"
    "log"
    "net/http"

    "golang.org/x/net/websocket"
)

func EchoServer(ws *websocket.Conn) {
    for {
        var message string
        err := websocket.Message.Receive(ws, &message)
        if err != nil {
            log.Println("receive failed:", err)
            break
        }
        log.Println("received:", message)

        err = websocket.Message.Send(ws, message)
        if err != nil {
            log.Println("send failed:", err)
            break
        }
        log.Println("sent:", message)
    }
}

func main() {
    http.Handle("/", websocket.Handler(EchoServer))
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }
}

上述程式碼建立了一個WebSocket伺服器,它將收到的訊息原樣發送回客戶端。在main函數中,我們使用http.Handle和websocket.Handler來將EchoServer函數註冊為處理器。然後使用http.ListenAndServe來啟動伺服器監聽埠8080。

在客戶端,我們可以使用http.Transport來建立WebSocket連接,並透過Send和Receive方法來傳送和接收資料。以下是一個簡單的客戶端範例程式碼:

package main

import (
    "fmt"
    "log"
    "net/http"

    "golang.org/x/net/websocket"
)

func main() {
    origin := "http://localhost/"
    url := "ws://localhost:8080/"
    ws, err := websocket.Dial(url, "", origin)
    if err != nil {
        log.Fatal("dial failed:", err)
    }

    message := "Hello, WebSocket!"
    err = websocket.Message.Send(ws, message)
    if err != nil {
        log.Fatal("send failed:", err)
    }

    var response string
    err = websocket.Message.Receive(ws, &response)
    if err != nil {
        log.Fatal("receive failed:", err)
    }

    fmt.Println("received:", response)
}

在上述程式碼中,我們使用websocket.Dial來建立WebSocket連線。然後使用websocket.Message.Send方法發送訊息,透過websocket.Message.Receive來接收伺服器傳回的訊息。

透過上述程式碼範例,我們可以使用Go和http.Transport輕鬆地建立和管理WebSocket連線。 WebSocket 為應用程式提供了高效且即時的雙向通訊能力,並且適用於許多不同的應用場景。希望本文對你有幫助!

以上是如何使用Go和http.Transport進行WebSocket通訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn