2020-10-21 12:37:50
WebSocket通过建立客户端与服务器间的持久连接实现双向实时通信,其码穗好核心在于一次握手后保持全双工通信,适用于低延迟、高频率数据交互场景。以下是具体使用方法及关键要点:
一、核心实现步骤客户端(浏览器端)
创建连接:使用JavaScript的WebSocket构造函数,传入服务器地址族指(ws://或加密的wss://)。
const ws = new WebSocket('ws://localhost:8080');监听事件:
onopen:连接成功时触发,可立即发送数据。
ws.onopen = () => { console.log('连接已建立'); ws.send('Hello Server!');};onmessage:接收服务器消息,更新UI或处理数据。
ws.onmessage = (event) => { console.log('收到消息:', event.data);};onclose与onerror:处理连接关闭或错误,可实现重连逻辑。
ws.onclose = (event) => { console.log(`连接关闭,代码: ${event.code}`);};ws.onerror = (error) => { console.error('发生错误:', error);};服务器端
选择库:根据语言选择支持WebSocket的库,例如:
Node.js:ws(轻量)或socket.io(功能丰富)。
Python:websockets或Flask-SocketIO。
Java:Spring Boot的WebSocket模块。
示例代码(Node.js + ws库):
const WebSocket = require('迟铅ws');const wss = new WebSocket.Server({ port: 8080 });wss.on('connection', (ws) => { console.log('新客户端连接'); ws.on('message', (message) => { console.log('收到消息:', message); // 广播给其他客户端 wss.clients.forEach((client) => { if (client !== ws && client.readyState === WebSocket.OPEN) { client.send(`新消息: ${message}`); } }); });});
HTTP:短连接,每次请求需重新建立连接。
WebSocket:持久连接,一次握手后长期保持。
HTTP:每次请求包含完整HTTP头,开销大。
WebSocket:连接建立后仅传输数据帧,开销极低。
HTTP:客户端主动请求,服务器响应。
WebSocket:全双工,双方可随时发送数据。
HTTP:需轮询或长轮询模拟实时,延迟高。
WebSocket:天生支持实时通信,延迟低。

网络波动或服务器重启可能导致连接断开,需实现优雅重连:
WebSocket在以下场景中优势显著:
WebSocket通过持久连接和全双工通信,彻底改变了传统HTTP的“请求-响应”模式,为实时应用提供了高效解决方案。其核心优势在于低延迟、低开销和双向性,尤其适合聊天、游戏、监控等场景。开发时需重点关注重连机制和心跳检测,以确保连接稳定性。