node.js - 如何在appfog中的node.js中保持套接字处于事件状态

标签 node.js socket.io

我有一个长时间运行的套接字,即使系统空闲,我也需要保持它的事件状态。为此,我尝试了从缩短长轮询持续时间到服务器和客户端乒乓消息的所有方法,但是似乎没有任何效果,因为套接字在一段持续时间(假设为 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/

相关文章:

node.js - Mongodb 错误 : The 'cursor' option is required, 除了使用解释参数进行聚合之外 mongodb 3.6

javascript - 为什么 fs.readFile 返回一个缓冲区?

javascript - 组织后端(Node)流程和使用部分流程的前端(Vue/Nuxt)的最佳方式

websocket - 仅针对使用 channel 而定制的 Phoenix 应用程序如何在多台机器上扩展?使用HAProxy?如何向所有节点广播消息?

javascript - 我想根据 URL 创建多个命名空间,但我对 socket.io 感到困惑

javascript - 运行minio服务器时不会出现对minio浏览器的更改

node.js - 如何使用 TypeScript 在输出目录中包含 node_modules

javascript - socket.io 错误 - 'Uncaught, unspecified "错误“事件。”

node.js - `require ' socket.io-client.js '` 不工作

javascript - Express + socket.io + mongoDB 有哪些架构选择