WebSocket 服务端
概念说明
WebSocket 是一种在单个 TCP 连接上进行双向通信的协议。
浏览器和服务端建立连接后,双方都可以主动发送消息。
Go 标准库没有直接提供 WebSocket 升级封装。
下面示例使用常见第三方包 github.com/gorilla/websocket。
安装依赖
| |
如果你已经在现成的 Go 模块里练习,可以跳过 go mod init。
语法/规则
- WebSocket 服务端通常先通过 HTTP 接收请求。
- 使用
Upgrader.Upgrade把 HTTP 连接升级为 WebSocket 连接。 - 使用
ReadMessage读取客户端消息。 - 使用
WriteMessage写回服务端消息。 - 连接结束后要关闭。
- 生产环境不要随意放开
CheckOrigin。
WebSocket 服务端示例
| |
连接地址:
| |
常见错误
- 没有先执行 HTTP 升级,就按普通 HTTP 请求处理 WebSocket 消息。
- 生产环境直接
CheckOrigin返回true,可能带来跨站风险。 - 读取或写入出错后不关闭连接,导致资源泄漏。
- 忘记安装第三方依赖,导致编译时找不到包。