在Golang中,使用gorilla/websocket进行websocket开发可以很方便地设置支持压缩。下面给出一个示例代码:
package mainimport ("compress/gzip""net/http""github.com/gorilla/websocket")func main() {upgrader := websocket.Upgrader{CheckOrigin: func(r *http.Request) bool {return true},}http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {conn, err := upgrader.Upgrade(w, r, nil)if err != nil {return}// 设置支持压缩conn.EnableWriteCompression(true)go func() {for {messageType, message, err := conn.ReadMessage()if err != nil {return}err = conn.WriteMessage(messageType, message)if err != nil {return}}}()})err := http.ListenAndServe(":8080", nil)if err != nil {return}}
在上述代码中,我们通过调用conn.EnableWriteCompression(true)来启用压缩功能。这里使用的是默认的压缩算法gzip,如果需要使用其他算法,可以通过实现websocket.CompressionMethod接口并传递给upgrader来自定义。




