WebSocket 协议
WebSocket 是一种基于文本的消息格式协议。它使用以下帧格式:
- 头部:长度和 opcodes 的 2 字节
- 可选掩码:4 字节掩码
- 数据:消息有效负载
WebSocket 模块
Node.js 提供了 ws
模块,它是一个用于构建和管理 WebSocket 服务器和客户端的库。此模块提供了以下类:
- WebSocketServer: 创建 WebSocket 服务器
- WebSocket: 抽象 WebSocket 连接
- WebSocketClient: 创建 WebSocket 客户端
服务器端
创建 WebSocket 服务器涉及以下步骤:
- 创建一个 HTTP 服务器。
- 使用
WebSocketServer
将其升级为 WebSocket 服务器。 - 监听
connection
事件以处理客户端连接。
当客户端连接时,WebSocket
实例将被创建,它表示服务器与客户端之间的连接。
客户端端
创建 WebSocket 客户端涉及以下步骤:
- 创建一个 WebSocket 客户端。
- 连接到服务器。
- 监听
open
事件以连接成功。
一旦连接成功,WebSocket
实例将表示客户端与服务器之间的连接。
通信
通过 WebSocket
实例,服务器和客户端可以发送和接收消息。以下方法可用于通信:
- send():发送消息
- on("message"):侦听传入消息
事件
WebSocket
实例还触发以下事件:
- open: 当连接打开时
- close: 当连接关闭时
- error: 当发生错误时
使用场景
WebSocket 用于各种实时通信场景,包括:
- 实时聊天应用程序
- 流媒体服务
- 在线游戏
- 协作工具
преимущества
使用 WebSocket 的主要优势包括:
- 双向通信:允许服务器和客户端双向发送和接收消息。
- 持续连接:保持持久连接,无需多次连接请求。
- 低延迟:相比 HTTP Polling 等技术,WebSocket 具有较低的延迟。
- 可扩展性:WebSocket 服务器可以轻松扩展以处理大量并发连接。
- 跨平台支持:WebSocket 得到所有主流浏览器的广泛支持。