Node.js WebSocket中的控制帧有哪些?
短信预约 -IT技能 免费直播动态提醒
1. 什么是控制帧?
在WebSocket协议中,控制帧用于在客户端和服务器之间交换控制信息。控制帧的类型包括Ping、Pong、Close、Ping RespControl、Bye和Continuation。
2. Ping
Ping帧用于检测客户端和服务器之间的连接是否仍然有效。客户端发送Ping帧,服务器收到Ping帧后会发送Pong帧作为响应。
// 发送Ping帧
const pingFrame = {
fin: true,
rsv1: false,
rsv2: false,
rsv3: false,
opcode: 0x9,
mask: false,
payloadData: Buffer.from("ping")
};
websocket.send(pingFrame);
// 接收Pong帧
websocket.on("message", (message) => {
if (message.opcode === 0xa) {
console.log("Received Pong frame");
}
});
3. Pong
Pong帧用于响应客户端发送的Ping帧。服务器发送Pong帧,客户端收到Pong帧后就知道服务器仍然在线。
// 发送Pong帧
const pongFrame = {
fin: true,
rsv1: false,
rsv2: false,
rsv3: false,
opcode: 0xa,
mask: false,
payloadData: Buffer.from("pong")
};
websocket.send(pongFrame);
4. Close
Close帧用于关闭WebSocket连接。客户端或服务器都可以发送Close帧来关闭连接。
// 发送Close帧
const closeFrame = {
fin: true,
rsv1: false,
rsv2: false,
rsv3: false,
opcode: 0x8,
mask: false,
payloadData: Buffer.from("Goodbye")
};
websocket.send(closeFrame);
5. PingRespControl
PingRespControl帧用于响应客户端的ping请求。该帧的内容与Ping帧的内容相同。
// 发送PingRespControl帧
const pingRespControlFrame = {
fin: true,
rsv1: false,
rsv2: false,
rsv3: false,
opcode: 0x9,
mask: false,
payloadData: Buffer.from("ping")
};
websocket.send(pingRespControlFrame);
6. Bye
Bye帧用于关闭WebSocket连接。该帧的内容与Close帧的内容相同。
// 发送Bye帧
const byeFrame = {
fin: true,
rsv1: false,
rsv2: false,
rsv3: false,
opcode: 0x8,
mask: false,
payloadData: Buffer.from("Goodbye")
};
websocket.send(byeFrame);
7. Continuation
Continuation帧用于发送分段的消息。该帧的内容是消息的某一部分。
// 发送Continuation帧
const continuationFrame = {
fin: false,
rsv1: false,
rsv2: false,
rsv3: false,
opcode: 0x0,
mask: false,
payloadData: Buffer.from("Hello")
};
websocket.send(continuationFrame);
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341