基于 Gorilla Websocket 的开发手册
Golang 用 websocket 不要问,问就说 Gorilla。
之前好像有一个仿 socket.io 的叫 go-socket.io 有兴趣可以看一下。
Gorilla Websocket 的官方文档文档用的是 GoDoc 所以看起来可能有点吃力,简单整理一下。
总揽
用一个基于 gin 的案例代码展示文档里的案例。
import (
"github.com/gorilla/websocket"
"log"
"net/http"
)
var wsupgrader = websocket.Upgrader{
ReadBufferSize: 1024,
WriteBufferSize: 1024,
}
func WSHandler(w http.ResponseWriter, r *http.Request) {
conn, err := wsupgrader.Upgrade(w, r, nil)
if err != nil {
log.Println("Failed to set websocket upgrade: %+v", err)
return
}
for {
t, msg, err := conn.ReadMessage()
log.Println(t)
if err != nil {
log.Println(err)
break
}
_ = conn.WriteMessage(t, msg)
}
}
v1.GET("/ws", func(c *gin.Context) {
WSHandler(c.Writer, c.Request)
})