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

时间:2018-05-18 20:56:21

标签: perl websocket webclient

我创建了一个websocket(使用perl Net :: WebSocket :: Server,但我认为没关系)。我的问题是,当我关闭网站选项卡(不一定是整个浏览器)时,服务器将断开特定套接字(我的断开连接事件被调用)。服务器如何知道这一点?我找不到直接的详细说明。

2 个答案:

答案 0 :(得分:6)

如果浏览器关闭套接字的一端(显式地通过关闭,或者因为进程退出而隐式),则将通知套接字连接另一端的服务器现在关闭套接字。这只是TCP工作方式的一部分。即使消息丢失并且服务器认为套接字仍处于打开状态,当它尝试发送数据时,最终会发现另一端没有确认数据包并且会丢弃连接。

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

答案 1 :(得分:1)

How TCP close connection.

  

每一方都终止其连接的结束   发送FIN(完成)位设置的特殊消息。这条信息,   有时称为FIN,用作连接终止请求   另一个设备,同时也可能像常规一样携带数据    分割。接收FIN的设备响应FIN的确认以指示它已被接收。在双方通过发送FIN并接收ACK完成关闭过程之前,不认为连接作为整体终止。