WebSocket - 关闭框架

时间:2016-02-03 20:06:48

标签: tcp websocket handshake

websocket RFC声明如下:

  

如果端点收到关闭帧并且之前没有发送关闭帧,则端点必须发送关闭帧作为响应。

后来它也提到:

  

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

当服务器启动紧密握手时,从客户端检索到关闭帧响应时,服务器可以关闭TCP。

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

2 个答案:

答案 0 :(得分:1)

正如您所说,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之后直接执行此操作,也可以等到服务器在其结束时将其关闭(由于连接状态发生变化,它会知道这一点)

答案 1 :(得分:1)

  

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

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

  

或服务器是否应该在检索关闭帧时关闭tcp?

这正是它所说的。当然,在向客户发送CLOSE FRAME之后。