WebSocket是基于TCP的全双工通信协议,通过HTTP升级握手(101状态码)建立长连接,支持文本/二进制帧传输,JavaScript中用new WebSocket(url)创建,监听open、message、error、close事件,但需手动处理重连与readyState校验。
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它让浏览器和服务器之间可以持续保持连接,实时收发数据,不像 HTTP 那样每次请求都要重新建立连接。
HTTP 是“请求-响应”模式:浏览器发一次请求,服务器回一次响应,连接
就断了。WebSocket 是“长连接”:握手阶段用 HTTP 升级(Upgrade),成功后就切换成 WebSocket 协议,双方随时能主动发消息。
使用 new WebSocket(url) 即可发起连接,url 必须是 ws://(非加密)或 wss://(加密,推荐,类似 HTTPS)开头。
示例:
const ws = new WebSocket('wss://echo.websocket.org');连接过程有四个关键事件:
ws.close())典型用法:
ws.onopen = () => { console.log('已连接'); ws.send('Hello Server'); };WebSocket 不是万能的,用之前要注意:
ws 库、Socket.IO 后端,或 Nginx 正确配置 proxy_pass + Upgrade 头)ws.readyState === WebSocket.OPEN 时调用 send(),否则会报错基本上就这些。WebSocket 本身 API 很轻量,难的是服务端配合和连接生命周期管理。