我试图从我的服务器人工发送一个关闭数据包到我的客户端,我应该发送什么原始值,以便客户端了解我正在关闭连接? websocket协议之间有区别吗?
答案 0 :(得分:7)
在最简单的级别 - 只需关闭连接 - 这样就可以了。
早期的hixie-76有一个简单的信令闭包序列:只发送两个字节0xFF,0x00(第一个是帧类型,第二个是长度)。
在所有后来的规范中,帧都有点复杂;它们被分解为:
对于第一部分,我们想要的操作码是0x08,这必须与“fin”标志组合,0x80(这只表示帧没有分成几条消息) - 所以0x88。
对于第二部分,我们可以使用零长度消息,但我们需要知道我们是客户端到服务器(总是被屏蔽,所以我们需要使用0x80)或服务器到客户端(从不屏蔽) ,所以我们需要使用0x00)。
如果设置了掩码标志,则第三部分仅包含 ,因此客户端到服务器;因为我们没有发送有效载荷,所以没有必要发明一个加密安全掩码 - 我们可以使用0x00 0x00 0x00 0x00。
第四个被省略,因为我们说的是零长度。
所以:客户端到服务器:0x88 0x80 0x00 0x00 0x00 0x00
服务器到客户端:0x88 0x00