我正在使用socket.io,它在本地运行很好,但是一旦用heroku生产它就会超时。我知道这是因为如果在55秒滚动窗口内没有听到任何内容,heroku将杀死/暂停Web套接字连接。
我遇到的问题是我将socket.io听力间隔设置为60000,因此在60秒内没有听到任何声音,即在55秒窗口之外:
io.set('heartbeat interval', 60000); //heroku timeout with Idle connection error.
我需要一些方法在55秒窗口内轮询服务器以保持连接活动。改变心跳间隔实际上不是一种选择,所以我不确定如何解决这个问题。
答案 0 :(得分:0)
通常,您希望路由器断开空闲连接,以便它们不会消耗后端的系统资源。面临的挑战是将实际闲置/丢失的连接与实时连接的客户分开,这些客户暂时还没有说过任何话。
一种解决方案是让客户端在55秒的窗口内ping服务器。这方面的一个例子是:
io.emit('ping')
基本上只有setInterval
。这样,只要客户端处于活动状态,它就会继续保持与服务器的连接。