WebSocket Close Packet

本文关键字:Packet Close WebSocket | 更新日期: 2023-09-27 18:18:51

我试图从我的服务器人为地向我的客户端发送一个关闭数据包,我应该发送什么原始值以便客户端理解我正在关闭连接?不同的websocket协议有区别吗?

WebSocket Close Packet

在最简单的层面上——只要关闭连接——就可以了。

早期的hixie-76有一个简单的信号关闭序列:只发送两个字节0xFF, 0x00(第一个是帧类型,第二个是长度)。

在所有后来的规范中,帧都有点复杂;它们被分解为:

  • (1字节)标志和操作码
  • (可变字节数)掩码标志和有效载荷长度
  • (可选,4字节)掩码
  • ({length} bytes)有效载荷

对于第一部分,我们想要的操作码是0x08,这必须与"fin"标志0x80结合在一起(这只是表明帧没有被拆分为几个消息)-所以0x88。

对于第二部分,我们可以使用零长度消息,但是我们需要知道我们是客户端到服务器(总是被屏蔽,所以我们需要使用0x80)还是服务器到客户端(从未被屏蔽,所以我们需要使用0x00)。

第三部分是,如果设置了掩码标志,则只包含,因此客户机到服务器;既然我们不发送有效载荷,那么发明一个加密安全掩码是没有意义的——我们可以只使用0x00 0x00 0x00 0x00。

第四个被省略,因为我们声明长度为零。

So:客户端到服务器:0x88 0x80 0x00 0x00 0x00 0x00

服务器到客户端:0x88 0x00