WebSocket - 关闭框架



websocket RFC声明如下:

如果终结点收到"关闭"帧,

并且之前未发送"关闭"帧,则终结点必须发送"关闭"帧作为响应。

后来它还提到:

服务器必须立即关闭底层 TCP 连接;

当服务器启动关闭握手时是有意义的,因为在从客户端检索关闭帧响应时,服务器可以执行 TCP 关闭。

当从客户端开始握手时会发生什么?客户端是否应该重新发送某种类型的消息以指示服务器终结点执行 TCP 关闭?还是服务器应该在检索关闭帧时执行 TCP 关闭?

客户端是否应该重新发送某种类型的消息以指示服务器终结点执行 tcp 关闭?

(a) 这正是 CLOSE FRAME 消息的用途,并且 (b) 不,服务器必须根据您引用的文本立即关闭 TCP 连接。

还是服务器应该在检索关闭帧时执行 TCP 关闭?

这正是它所说的。当然,在向客户端发送关闭帧之后。

正如你所指出的,RFC 说:

If an endpoint receives a Close frame and did not previously send a Close frame, the endpoint MUST send a Close frame in response.

这适用于服务器和客户端。因此,当平仓源自客户端时,将发生以下情况:

  1. 客户端发送Close
  2. 服务器接收Close帧并将其回显到客户端,因为它自己没有发送一个帧
  3. 服务器关闭其 TCP 连接(它必须在发送Close帧后立即执行此操作)
  4. 客户端关闭其 TCP 连接。它可以在收到来自服务器的回显Close后直接执行此操作,也可以等到服务器在其末尾关闭它(由于连接状态更改,它会知道这一点)

相关内容

  • 没有找到相关文章

最新更新