簡體   English   中英

node.js和heroku上的socket.io,空閑超時錯誤

[英]socket.io on node.js and heroku, idle timeout error

我使用的是socket.io,在本地運行良好,但是一旦在heroku中投入生產,它就會超時。 我知道這是因為,如果在55秒的滾動窗口內聽不到任何聲音,heroku將會終止/刷新Web套接字連接。

我遇到的問題是,我將socket.io的聽音間隔設置為60000,所以60秒內沒有聽到任何聲音,即在55秒的窗口之外:

io.set('heartbeat interval', 60000); //heroku timeout with Idle connection error. 

我需要在55秒的窗口內輪詢服務器以使連接保持活動狀態的某種方式。 更改心跳間隔並不是真正的選擇,因此我不確定如何執行此操作。

通常,您希望路由器斷開空閑連接,以便它們不消耗后端的系統資源。 面臨的挑戰是將實際上閑置/丟失的連接與實時連接的客戶端(只是一段時間沒有說話)分開。

一種解決方案是讓客戶端在55秒的窗口內ping服務器。 一個例子在這里:

https://github.com/hunterloftis/websocket-ping/blob/2dd45b100a754ee8b151ab3d16d2ee3787d2dc8e/index.html#L65

https://github.com/hunterloftis/websocket-ping/blob/2dd45b100a754ee8b151ab3d16d2ee3787d2dc8e/index.html#L80-L83

基本上只是在setIntervalio.emit('ping') 這樣,只要客戶端還活着,它將繼續維持與服務器的連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM