[英]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服務器。 一個例子在這里:
基本上只是在setInterval
上io.emit('ping')
。 這樣,只要客戶端還活着,它將繼續維持與服務器的連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.