我创建了一个 websocket(使用 perl Net::WebSocket::Server 但我认为这无关紧要)。我的问题是,当我关闭网站选项卡(不一定是整个浏览器)时,服务器将断开特定套接字(调用我的断开连接事件)。服务器如何设法知道这一点?我找不到直接的详细描述。
最佳答案
如果浏览器关闭套接字的一端(显式地通过关闭,或隐式地因为进程退出),套接字连接的另一端的服务器将被通知套接字现在已关闭。这只是 TCP 工作方式的一部分。即使消息丢失并且服务器认为套接字仍处于打开状态,当它尝试发送数据时它最终会发现另一端未确认数据包并会断开连接。
在浏览器选项卡的情况下,可以合理地假设浏览器将清除/关闭与正在关闭的选项卡关联的任何资源。
关于perl - 服务器如何知道关闭网站选项卡时关闭websocket的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50419153/