Web 前端与后台的通信
短轮询:通过不断发送 http 请求达到即时通信的目的
长轮询:访问无资源并不会立刻返回,保持较长时间的通讯,直到获得数据或超时返回。
WebSocket:基于 TCP 协议,兼容 HTTP 协议的基础上,做协议升级,在 HTML5 中提供 client 和 server 进行全双工通信。
Socket.IO
Socket.IO 是一个封装了 Websocket、基于 Node 的 JavaScript 框架,包含 client 的 JavaScript 和 server 的 Node。其屏蔽了所有底层细节,让顶层调用非常简单。
Socket.IO 的协议
Socket.IO 的协议基于 engine.io 的版本,目前最新版本是 4。GO 的 socket.io 库是 github.com/graarh/golang-socketio,仅支持 EIO=3 的协议版本。
准备全栈 Socket.IO 库
前端 (React typescript):
"socket.io-client": "2.3.0"
"@types/socket.io-client": "^1.4.33"