WebSocket是浏览器与服务器间持久双向低延迟通信标准,通过new WebSocket()建立连接,支持onopen/onmessage/onclose事件处理、JSON结构化消息、异常重连及SSE/轮询兜底。

JavaScript 实现实时通信主要靠 WebSocket,它是浏览器与服务器之间建立持久、双向、低延迟连接的标准方案。相比轮询或长轮询,WebSocket 真正做到了服务端有数据可推、客户端即时接收,适合聊天、协同编辑、实时通知等场景。
前端通过 new WebSocket(url) 创建连接,URL 以 ws:// 或 wss:// 开头(后者为加密版本):
onopen 回调,此时可发送首次消息onmessage,event.data 就是消息内容(可能是字符串或 ArrayBuffer)socket.send("hello"),支持字符串和二进制数据onclose,可监听 event.code 和 event.reason 判断原因网络不稳定或服务重启会导致连接中断,不能只依赖一次 new WebSocket():
onerror 和 onclose 中启动延时重连(比如 1s、2s、4s 指数退避)socket.readyState 判断当前状态:0=CONNECTING、1=OPEN、2=CLOSING、3=CLOSED
纯字符串不够灵活,实际项目中通常用 JSON 封装消息类型、时间戳、业务字段:
立即学习“Java免费学习笔记(深入)”;
JSON.stringify({ type: "chat", from: "user1", text: "hi" })
JSON.parse(event.data) 解析,并用 switch(type) 分发处理逻辑JSON.parse 异常,防止非法消息导致脚本崩溃WebSocket 需要服务端支持(如 Node.js 的 ws 库、Socket.IO、或 Nginx 反向代理配置升级头):
EventSource(SSE)做只读实时推送setInterval + fetch 短轮询(间隔建议 ≥3s,避免压垮服务)visibilitychange 优化行为wss,HTTP 页面无法创建 ws 连接(混合内容限制)基本上就这些。WebSocket 本身 API 很轻量,难点在于连接管理、消息协议设计和异常应对。不复杂但容易忽略细节,稳住连接比写好回调更重要。
以上就是Javascript如何实现实时通信?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号