2013-02-16 55 views
9

我有一個Web應用程序,用戶需要經常連接。默認情況下,socket.io將在60秒後斷開連接。儘管我打開了「重新連接」,所以它基本上每分鐘關閉並重新打開連接。這可能會導致Feed /通知給我連接的客戶端。將此超時設置爲10分鐘還是更高可以安全嗎?現在有這麼低的原因嗎?在socket.io上設置高關閉超時安全嗎?

回答

3

我不相信你的套接字應該在60秒後斷開連接。我會調查爲什麼實際發生。在正確握手之後,套接字應該心跳並保持無限期開放(禁止網絡問題超出你的控制範圍),直到客戶端或服務器關閉連接,這絕對是我的經驗。

事實上,您的連接實際上是關閉它的聲音,可能無法正確握手,或者沒有收到心跳。

10

我的猜測是你可能會誤解'close timeout'配置。它不會導致連接在60秒後關閉。 (如果客戶不斷重新連接,心跳將毫無意義)。

如果客戶端斷開連接,則close timeout是釋放與該連接關聯的資源之前服務器將等待的時間量。從本質上講,這允許客戶端有間歇性的連接問題,試圖在服務器忘記它們之前重新連接。將close timeout設置爲十分鐘可能是一個壞主意,因爲它會佔用服務器資源。

如果你的客戶實際上每隔60秒斷開一次,那麼就像samjm說的那樣,其他的事情是錯誤的。

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::')