好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受.
WebSocket 是一种基于 TCP 协议 的全双工通信协议,用于在客户端(如浏览器)和服务器之间建立持久化的双向实时通信通道。与传统的 HTTP 协议不同,WebSocket 允许服务器主动向客户端推送数据,解决了 HTTP 单向请求-响应模式的局限性,非常适合需要低延迟和高实时性的应用场景。
目录
[一、WebSocket 的核心特点](#一、WebSocket 的核心特点)
[二、WebSocket 的工作原理](#二、WebSocket 的工作原理)
[四、WebSocket 安全问题](#四、WebSocket 安全问题)
[五、示例代码(JavaScript 客户端)](#五、示例代码(JavaScript 客户端))
一、WebSocket 的核心特点
-
全双工通信
客户端和服务器可以同时发送和接收数据,无需等待对方的请求。
对比:HTTP 是半双工,客户端必须主动发起请求,服务器才能响应。
-
持久化连接
建立连接后,通信通道会一直保持打开状态(直到主动关闭),避免了 HTTP 频繁建立/断开连接的开销。
-
低延迟
数据以轻量级的帧(Frame)传输,减少协议头部的冗余信息,适合高频次、小数据量的场景。
-
基于 HTTP 握手
WebSocket 通过一次 HTTP 握手升级协议(
Upgrade: websocket
),将连接从 HTTP 切换到 WebSocket 协议(状态码101 Switching Protocols
)。 -
支持跨域通信
可通过 CORS(跨域资源共享)机制实现跨域连接。
二、WebSocket 的工作原理
-
握手阶段
-
客户端发起一个 HTTP 请求,包含
Upgrade: websocket
和Connection: Upgrade
头部。 -
服务器返回
101 Switching Protocols
响应,确认协议升级。 -
后续通信使用 WebSocket 协议(基于二进制帧传输数据)。
-
-
数据传输
-
数据以帧(Frame)为单位传输,支持文本(UTF-8)和二进制格式。
-
每个帧包含掩码(客户端到服务器的帧必须掩码)和分帧(大数据分块传输)信息。
-
三、常见应用场景
-
实时聊天应用:如在线客服、群聊(消息实时推送)。
-
协同编辑工具:多用户同时编辑文档(实时同步内容)。
-
实时游戏:多玩家在线游戏的状态同步。
-
股票行情推送:实时更新价格、交易量。
-
物联网(IoT):设备状态监控与指令下发。

四、WebSocket 安全问题
-
加密通信
使用
wss://
(WebSocket Secure)协议,基于 TLS/SSL 加密(类似 HTTPS)。 -
输入验证
需防范恶意数据注入(如 WebSocket 消息中的 XSS 攻击)。
-
连接限制
控制并发连接数,防止 DDoS 攻击。
五、示例代码(JavaScript 客户端)
// 创建 WebSocket 连接
const socket = new WebSocket('wss://example.com/socket');
// 监听连接建立
socket.onopen = () => {
socket.send('Hello Server!');
};
// 监听服务器消息
socket.onmessage = (event) => {
console.log('Received:', event.data);
};
// 监听错误或关闭
socket.onclose = () => {
console.log('Connection closed');
};
六、总结
WebSocket 是构建实时应用的理想选择,它通过持久化、双向、低开销的通信机制,解决了传统 HTTP 在实时性上的不足。对于需要频繁数据交换的场景(如聊天、游戏、实时监控),WebSocket 能显著提升性能和用户体验。
关注我,带你了解更多IT知识
搜索:codingba 或 "码出精彩" ,和我一起探讨软件研发的那些事。