WebSocket 可实现浏览器与服务器全双工通信,通过 new WebSocket('ws://...') 建立连接,onopen 触发后可用 send() 发送数据、onmessage 接收消息,支持 JSON 格式,close() 关闭连接并由 onclose 处理关闭事件,readyState 表示连接状态,生产环境推荐使用 wss、添加重连机制、控制消息频率、验证数据并及时清理连接。

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,相比传统的 HTTP 轮询,它能实现真正的实时数据交互。在 JavaScript 中使用 WebSocket 可以轻松构建聊天应用、实时通知、在线协作工具等需要即时通信的功能。
创建 WebSocket 连接
要建立 WebSocket 连接,只需实例化一个 WebSocket 对象,并传入服务器的 ws 或 wss(加密)地址:
const socket = new WebSocket('ws://localhost:8080');
socket.onopen = function(event) {
console.log('连接已建立');
};
socket.onerror = function(error) {
console.error('连接出错:', error);
};
连接成功后会触发 onopen 事件,之后就可以收发数据了。
发送与接收消息
通过 send() 方法向服务器发送数据,通常为字符串或 JSON 格式:
立即学习“Java免费学习笔记(深入)”;
socket.send(JSON.stringify({
type: 'message',
content: '你好,服务器!'
}));
使用 onmessage 监听来自服务器的消息:
华友协同办公管理系统(华友OA),基于微软最新的.net 2.0平台和SQL Server数据库,集成强大的Ajax技术,采用多层分布式架构,实现统一办公平台,功能强大、价格便宜,是适用于企事业单位的通用型网络协同办公系统。 系统秉承协同办公的思想,集成即时通讯、日记管理、通知管理、邮件管理、新闻、考勤管理、短信管理、个人文件柜、日程安排、工作计划、工作日清、通讯录、公文流转、论坛、在线调查、
socket.onmessage = function(event) {
const data = JSON.parse(event.data);
console.log('收到消息:', data);
};
event.data 是服务器发送的内容,可以是字符串、Blob 或 ArrayBuffer,常见的是字符串形式的 JSON 数据。
关闭连接与状态管理
可调用 close() 主动关闭连接:
socket.close();
通过 onclose 处理连接关闭事件:
socket.onclose = function(event) {
if (event.wasClean) {
console.log(`连接关闭,代码=${event.code} 原因=${event.reason}`);
} else {
console.warn('连接意外断开');
}
};
可通过 socket.readyState 检查当前连接状态:
- 0: CONNECTING(连接中)
- 1: OPEN(已打开)
- 2: CLOSING(关闭中)
- 3: CLOSED(已关闭)
实际使用建议
在生产环境中使用 WebSocket 时需要注意几点:
- 使用 wss:// 提供加密传输,保障数据安全
- 添加重连机制,网络中断后自动尝试恢复连接
- 控制消息频率,避免频繁 send 导致性能问题
- 合理解析和验证收到的数据结构,防止异常
- 在组件卸载时关闭连接,防止内存泄漏(如 React 中的 useEffect cleanup)









