如何在appfog中的node.js中保持一个套接字

时间:2013-06-16 12:04:23

标签: node.js socket.io

我有一个长时间运行的套接字,即使在系统空闲时我也需要保持活动状态。为此我尝试了从减少长轮询持续时间到服务器和客户端乒乓消息的所有内容,但是,似乎没有任何工作,因为套接字在一段时间后断开连接让我们说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

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

1 个答案:

答案 0 :(得分: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
                });