使用websocket
使用 net
库的 WebSocket
服务端
server.go
package main import ( "fmt" "github.com/labstack/echo" "github.com/labstack/gommon/log" "golang.org/x/net/websocket" ) func main() { e := echo.New() e.File("/", "template/socket.html") e.GET("/ws", wsTest) e.Logger.Fatal(e.Start(":1323")) } func wsTest(c echo.Context) error { websocket.Handler(func(ws *websocket.Conn) { defer ws.Close() for { // Write err := websocket.Message.Send(ws, "Hello, Client!") if err != nil { log.Fatal(err) } // Read msg := "" err = websocket.Message.Receive(ws, &msg) if err != nil { log.Fatal(err) } fmt.Println(msg) } }).ServeHTTP(c.Response(), c.Request()) return nil }
客户端
index.html
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>WebSocket</title> </head> <body> <p id="output"></p> <script> let ws = new WebSocket("ws://127.0.0.1:1323/ws"); ws.onopen = function () { console.log('Connected') }; ws.onmessage = function (evt) { var out = document.getElementById('output'); out.innerHTML += evt.data + '<br>'; }; setInterval(function () { ws.send('Hello, Server!'); }, 1000); </script> </body> </html>