基于 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)
})