## Websockets 本示例将展示如何在 Go 中使用 WebSocket。我们将构建一个简单的服务器,它将回显我们发送给它的所有内容。为此,我们必须得到流行的 [gorilla/websocket](https://github.com/gorilla/websocket) 库,如下所示: ```bash $ go get github.com/gorilla/websocket ``` 从现在起,我们编写的每个应用程序都将能够使用这个库。 ## websockets.go ```go // websockets.go package main import ( "fmt" "net/http" "github.com/gorilla/websocket" ) var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } func main() { http.HandleFunc("/echo", func(w http.ResponseWriter, r *http.Request) { conn, _ := upgrader.Upgrade(w, r, nil) // error ignored for sake of simplicity for { // Read message from browser msgType, msg, err := conn.ReadMessage() if err != nil { return } // Print the message to the console fmt.Printf("%s sent: %s\n", conn.RemoteAddr(), string(msg)) // Write message back to browser if err = conn.WriteMessage(msgType, msg); err != nil { return } } }) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "websockets.html") }) http.ListenAndServe(":8080", nil) } ``` ## websockets.html ```html
``` ## run ```console $ go run websockets.go [127.0.0.1]:53403 sent: Hello Go Web Examples, you're doing great! ```