9

我有一个需要不断连接用户的 Web 应用程序。默认情况下,socket.io 会在 60 秒后断开连接。我已经打开了“重新连接”,所以它基本上每分钟都会关闭和重新打开连接。这可能会导致我连接的客户端的提要/通知出现问题。将此超时设置为 10 分钟或可能更高是否安全?现在这么低有什么原因吗?

4

3 回答 3

11

我的猜测是您可能误解了'close timeout'配置。它不会导致连接在 60 秒后关闭。(如果客户端不断重新连接,心跳将毫无意义)。

如果客户端断开连接,close timeout是服务器在释放与该连接关联的资源之前等待的时间量。本质上,这允许有间歇性连接问题的客户端在服务器忘记它们之前尝试重新连接。设置close timeout为十分钟可能是个坏主意,因为它会占用服务器资源。

如果您的客户实际上每 60 秒断开一次,那么就像 samjm 所说的那样,还有其他问题。

于 2013-03-26T08:13:59.077 回答
3

我不相信您的套接字会在 60 秒后断开连接。我会调查为什么会发生这种情况。正确握手后,套接字应该心跳并无限期地保持打开状态(禁止网络问题超出您的控制),直到客户端或服务器关闭连接,这绝对是我的经验。

您的连接实际上正在关闭的事实听起来可能没有正确握手,或者没有收到心跳。

于 2013-03-26T07:13:58.127 回答
0

您可能已经知道这一点,但是您的套接字可能会在 60 秒后断开连接,因为您没有将心跳(“2::”)发送回服务器。

这是一些与websocket 客户端模块一起使用的 Python 代码。

# on_message handles messages from the server
def on_message(ws, message):
    if message[:3] == '2::':
        ws.send('2::')
于 2013-12-15T00:31:12.893 回答