在socket.io上设置高关闭超时是否安全?

时间:2013-02-16 20:27:22

标签: node.js timeout socket.io

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

3 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

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

这是一些适用于websocket client module的Python代码。

# on_message handles messages from the server
def on_message(ws, message):
    if message[:3] == '2::':
        ws.send('2::')