套接字.node.js和heroku上的IO,空闲超时错误
socket.io on node.js and heroku, idle timeout error
我使用socket。Io,它在本地运行得很好,但是一旦使用heroku投入生产,它就会超时。我知道这是因为如果在55秒的滚动窗口内没有听到任何消息,heroku将杀死/暂停web套接字连接。
我遇到的问题是我正在设置套接字。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
基本上就是io.emit('ping')
在setInterval
上。这样,只要客户端还活着,它就会继续保持与服务器的连接。
相关文章:
- Cordova网络视图超时错误
- wkhtmltopdf超时错误
- 导致ajax调用超时错误的原因
- RecordRTC视频上传AmazonS3超时错误
- 茉莉花超时错误
- 需要模块的JS加载超时:错误详细信息
- JavaScript WebRTC 对等超时/错误
- 如何在角度 js $http调用中显示超时错误
- 如何处理requireJs超时错误
- 如何从客户端解决会话超时错误
- Javascript:如何检测facebook连接超时错误
- 使用量角器和角度带模式测试登录对话框时发生超时错误
- InternetDojo示例退出时出现超时错误
- WebApi Catch连接超时错误
- 套接字.node.js和heroku上的IO,空闲超时错误
- JS:如何在for循环中重置索引,使其再次循环而不会出现大量超时错误
- 在node.js中运行应用程序时出现连接超时错误
- selenium-webdriver和phantomJS中的等待超时错误
- Mocha超时错误
- CoffeeScript:使用 node-imap 向服务器进行身份验证时出现超时错误