6. Sending and Receiving Data (发送和接收数据)
6.1 Sending Data (发送数据)
要通过WebSocket连接发送数据,端点必须 (MUST) 将数据封装在WebSocket帧中。
发送步骤
- 准备要发送的数据
- 确定帧类型(Text或Binary)
- 如果是客户端,生成掩码密钥并掩码数据
- 构造WebSocket帧
- 通过底层TCP连接发送
浏览器API示例
const ws = new WebSocket('wss://example.com/socket');
// 发送文本数据
ws.send('Hello, Server!');
// 发送二进制数据
const buffer = new ArrayBuffer(8);
ws.send(buffer);
// 发送Blob
const blob = new Blob(['Hello'], { type: 'text/plain' });
ws.send(blob);
6.2 Receiving Data (接收数据)
当端点接收到数据时,必须 (MUST) 按以下步骤处理:
- 读取帧头部
- 验证帧格式
- 如果有掩码,解除掩码
- 根据Opcode处理帧
- 如果是分片消息,重组消息
- 将完整消息传递给应用层
浏览器API示例
ws.onmessage = (event) => {
if (typeof event.data === 'string') {
console.log('收到文本:', event.data);
} else if (event.data instanceof ArrayBuffer) {
console.log('收到二进制:', event.data);
}
};
参考链接
- 上一章: 5. Data Framing
- 下一章: 7. Closing the Connection