我正在尝试学习Perl中的套接字。通常用户关闭盖子和套接字连接断开。有什么方法服务器可以了解客户端进入睡眠模式。请帮助。我正在使用Net :: WebSocket :: Server
答案 0 :(得分:0)
检测未主动关闭但突然变得无法访问的套接字的常用方法是按照约定的时间表发送心跳包。套接字的另一端应该在每次收到心跳包时响应心跳响应。
如果服务器发出心跳并且在合理的时间内没有收到响应,则可以假定客户端不再主动连接。
像socket.io
这样的套接字库实现了这种技术,用于检测连接何时用于websockets,但同样的技术可以用于任何类型的套接字。
心跳可以从连接的任何一端使用(仅取决于你想要的方式和每个方面的期望)。因此,如果服务器正在发送心跳,则客户端可以假设如果它在没有接收任何心跳请求的情况下超过X时间,则它与服务器的连接必须已经死亡,因此它应该关闭套接字并重新连接。