我有一个长时间运行的套接字,即使在系统空闲时我也需要保持活动状态。为此我尝试了从减少长轮询持续时间到服务器和客户端乒乓消息的所有内容,但是,似乎没有任何工作,因为套接字在一段时间后断开连接让我们说1小时。但是套接字连接需要存活,直到我手动关闭它。
我如何实现这一目标?
也是最新版本的node.js semms支持socket.setTimeOut(0),通过它我可以无限期地保持套接字打开但是setTimeOut方法似乎不存在我正在使用的版本中的套接字,因为它显示的方法不是定义的错误。我使用的节点版本是0.8。
对于乒乓消息,我使用此代码http://stackoverflow.com/questions/9708604/nodejs-socket-io-connections-dropping-reconnecting
减少了我用过的长轮询时间
http://stackoverflow.com/questions/13458943/node-js-tcp-socket-server-on-the-cloud-heroku-appfog
和连接事件上的socket.settimeout
http://www.fingersdancing.net/2012/12/nodejs-connection-times-out-after-2.html
对此的任何帮助将不胜感激:)
答案 0 :(得分:3)
解决方案是在发生断开连接事件时以连接方式连接,并再次在连接事件上注册信息(如果只维护套接字的单独信息列表,则需要这个信息...说是维护在线用户列表)
socket.on("disconnect", function() {
//https://github.com/LearnBoost/socket.io-client/issues/251
socket.socket.reconnect();
});
socket.on("connect", function() {
//do the registration code within this event
});