1

我有一个长时间运行的套接字,即使系统空闲,我也需要保持活动状态。为此,我尝试了从减少长轮询持续时间到服务器和客户端 ping pong 消息的所有方法,但是,由于套接字在一段时间后断开连接,比如 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

对此的任何帮助将不胜感激:)

4

1 回答 1

3

嗯...找不到原因,即使我认为这是公司正在使用的 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
                });
于 2013-07-10T06:37:52.673 回答