WebSocket是浏览器与服务器间持久化双向通信标准,需用ws://或wss://协议创建实例,监听onopen、onmessage、onerror、onclose事件,支持文本/JSON/二进制收发,并应实现指数退避重连策略。
WebSocket 是浏览器与服务器之间建立持久化双向通信通道的标准方式,相比轮询或长连接更高效、低延迟。要实现实时通信,核心是正确创建 Web
Socket 实例并处理连接生命周期。
使用 new WebSocket(url) 即可发起连接,url 必须以 ws://(非加密)或 wss://(加密,推荐)开头,不能用 http:// 或 https://。
const ws = new WebSocket("wss://echo.websocket.org");(测试用公共回显服务)ws 库),地址可能是 "ws://localhost:8080"
"wss://api.example.com/chat?user=123",后端可通过 upgradeReq.url 解析查询字符串WebSocket 对象提供多个事件回调,用于响应连接状态变化和收发数据:
event.data 是文本或 Blob/ArrayBuffer
event.code 和 event.reason 可帮助判断原因(如 1000 正常关闭,1006 异常断连)WebSocket 默认以文本(UTF-8 字符串)通信,也可传输二进制数据:
ws.send("hello server")
ws.send(JSON.stringify({ type: "login", userId: 42 }))
ws.send(new Uint8Array([1,2,3]).buffer)
if (typeof event.data === "string") { ... } else if (event.data instanceof Blob) { ... }
真实场景中网络不稳定,需主动管理连接状态:
new WebSocket(...)
visibilitychange 或 pagehide 事件暂停重连,恢复后再尝试