Skip to main content

6. Sending and Receiving Data (发送和接收数据)

6.1 Sending Data (发送数据)

要通过WebSocket连接发送数据,端点必须 (MUST) 将数据封装在WebSocket帧中。

发送步骤

  1. 准备要发送的数据
  2. 确定帧类型(Text或Binary)
  3. 如果是客户端,生成掩码密钥并掩码数据
  4. 构造WebSocket帧
  5. 通过底层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) 按以下步骤处理:

  1. 读取帧头部
  2. 验证帧格式
  3. 如果有掩码,解除掩码
  4. 根据Opcode处理帧
  5. 如果是分片消息,重组消息
  6. 将完整消息传递给应用层

浏览器API示例

ws.onmessage = (event) => {
if (typeof event.data === 'string') {
console.log('收到文本:', event.data);
} else if (event.data instanceof ArrayBuffer) {
console.log('收到二进制:', event.data);
}
};

参考链接