HTTP 是一问一答的短连接,WebSocket 握手成功后通道一直保持,服务器可以主动推消息给客户端,客户端也能随时发消息,没有 HTTP 轮询的请求头开销。使用 new WebSocket(ws 地址) 建连,onopen/onmessage/onclose/onerror 四个回调覆盖整个生命周期,send 方法双向发消息。
典型场景是聊天室、股票行情、在线协同编辑与多人游戏。send 只能发字符串、ArrayBuffer 或 Blob,结构化数据通常 JSON 序列化后传输。要自己处理断线重连与心跳保活;如果是简单的服务器单向推送(如通知),SSE 可能更省事。
var ws = null; function connect() { ws = new WebSocket('wss://echo.websocket.org'); ws.onopen = function () { console.log('连接已建立'); ws.send('你好,服务器'); }; ws.onmessage = function (e) { console.log('收到消息:', e.data); }; ws.onclose = function () { console.log('连接关闭,3 秒后重连'); setTimeout(connect, 3000); }; ws.onerror = function (e) { console.log('发生错误', e); }; } connect();