websocket简介与基本使用
websocket是什么
WebSocket 是一种基于 TCP 的全双工通信协议,允许客户端和服务器之间建立持久连接,实现实时、双向的数据传输。它是 HTTP 协议的补充,专为低延迟、高效率的实时通信设计。
核心特点
特性 说明 全双工通信 客户端和服务器可以同时发送和接收数据(不像 HTTP 的请求-响应模式)。 低延迟 建立连接后,数据可以即时推送,无需频繁建立新连接。 持久连接 一次握手后,连接保持打开状态,直到主动关闭。 轻量级 数据包头较小(仅 2~10 字节),适合高频通信场景。 与 HTTP 的对比
WebSocket HTTP 通信模式 双向通信(服务器可主动推送) 单向请求-响应(客户端发起) 连接方式 持久连接 短连接(每次请求后关闭) 协议头 轻量级(ws:// 或 wss://) 较复杂(http:// 或 https://) 适用场景 实时聊天、股票行情、游戏同步 网页浏览、API 调用
工作原理
握手阶段
客户端通过 HTTP 发送升级请求(Upgrade 头):
GET /chat HTTP/1.1 Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
服务器返回
101 Switching Protocols
确认升级为 WebSocket。数据传输
握手成功后,双方通过二进制帧(Frame)传输数据,无需重复握手。
关闭连接
任一方发送关闭帧(Opcode
0x8
)即可终止连接。
常见应用场景
实时聊天(如微信网页版)
在线协作工具(如 Google Docs 多人编辑)
股票行情推送
多人在线游戏
IoT 设备控制(如智能家居实时状态更新)
代码示例(JavaScript)
// 客户端 const socket = new WebSocket("wss://example.com/chat");// 监听消息 socket.onmessage = (event) => {console.log("收到消息:", event.data); };// 发送消息 socket.send("Hello Server!");// 关闭连接 socket.close();
安全性
加密:使用
wss://
(WebSocket Secure,基于 TLS/SSL)。验证:通过
Sec-WebSocket-Key
和Sec-WebSocket-Accept
防止恶意连接。
优缺点
优点:实时性强、节省带宽(相比 HTTP 轮询)。
缺点:
需要服务器持续维护连接(可能增加资源消耗)。
部分老旧浏览器或网络设备可能不支持。
WebSocket 是现代实时应用的基石技术,结合后端框架(如 Socket.IO、WebSocket API)可轻松构建高效的双向通信系统。