我有一个长时间运行的套接字,即使系统空闲,我也需要保持它的事件状态。为此,我尝试了从缩短长轮询持续时间到服务器和客户端乒乓消息的所有方法,但是似乎没有任何效果,因为套接字在一段持续时间(假设为 1 小时)后断开连接。但套接字连接需要保持事件状态,直到我手动关闭它。
如何实现这一目标?
最新版本的node.js semms也支持socket.setTimeOut(0),通过它我可以无限期地保持套接字打开,但在我使用的版本中,setTimeOut方法似乎对于套接字不存在,因为它显示方法未定义错误。我使用的node版本是0.8。
对于 ping pong 消息,我使用此代码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
对此的任何帮助将不胜感激:)
最佳答案
嗯...找不到原因,尽管我相信这是公司正在使用的 gfi 网络监视器的邪恶行为,但确实找到了解决方案...
解决方案是在断开连接事件发生后立即进行连接,并再次注册连接事件的信息(如果您维护一个单独的套接字信息列表,则需要这样做......假设您维护一个在线用户列表)
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
});
关于node.js - 如何在appfog中的node.js中保持套接字处于事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17133134/