代码之家  ›  专栏  ›  技术社区  ›  Tonys AnsonÄ« Misirgis

当“网站”选项卡关闭时,服务器如何知道关闭websocket的连接

  •  2
  • Tonys AnsonÄ« Misirgis  · 技术社区  · 6 年前

    我创建了一个websocket(使用perl Net::websocket::Server,但我认为这无关紧要)。我的问题是,当我关闭“网站”选项卡(不一定是整个浏览器)时,服务器将断开特定套接字的连接(我的断开事件称为断开连接)。服务器是怎么知道的?我找不到直接详细的描述。

    2 回复  |  直到 6 年前
        1
  •  9
  •   Grant McLean    6 年前

    如果浏览器关闭套接字的一端(通过关闭显式关闭,或由于进程退出而隐式关闭),则位于套接字连接另一端的服务器将收到套接字现在已关闭的通知。这只是TCP工作原理的一部分。即使消息丢失,服务器认为套接字仍然打开,当它试图发送数据时,最终会发现另一端没有确认数据包,并会断开连接。

    对于浏览器选项卡,可以合理地假设浏览器将清理/关闭与正在关闭的选项卡关联的任何资源。

        2
  •  1
  •   Borodin    6 年前

    How TCP close connection.

    每侧通过以下方式终止其连接端: 发送设置了FIN(完成)位的特殊消息。这个信息, 有时被称为FIN,用作连接终止请求 另一个设备,同时也可能像普通手机一样携带数据 段接收FIN的设备会向FIN发出应答,以表明它已被接收。在双方通过发送FIN和接收ACK完成关闭程序之前,不认为整个连接已终止。