基于 Gorilla Websocket 的开发手册

Golang 用 websocket 不要问,问就说 Gorilla。

之前好像有一个仿 socket.io 的叫 go-socket.io 有兴趣可以看一下。

[Gorilla Websocket]

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