如何使用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中文網其他相關文章!