在服务器上配置心跳超时,心跳间隔和关闭超时

时间:2015-07-09 16:27:49

标签: angularjs node.js express socket.io ionic-framework

我有一个node.js服务器,我使用socket.io进行服务器和客户端之间的实时通信。我观察到,如果移动客户端(使用Ionic Framework)突然断开连接,而不让服务器知道它,则套接字可以存活数小时(或永久)。我已阅读并查看了他们的文档,他们有类似的选项 pingInterval, pingtimeout, heartbeat interval, heartbeat timeout, close timeout

如何在服务器上配置这些值?

哪些值已被弃用?

这是我的代码。

var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io').listen(server);
io.set('heartbeat interval', 5000); 
io.set('heartbeat timeout', 8000);
io.set('timeout', 5000);
io.on('connection', function(socket){...}

这些似乎都不起作用。任何帮助或指导都非常感谢。

  

PS:当客户端断开连接时,我正在拼接我的集合的套接字   当客户告诉服务器他们想要的时候,它工作得很好   优雅地断开。

1 个答案:

答案 0 :(得分:1)

您必须使用此处提到的pingTimeouthttps://github.com/Automattic/socket.io/issues/1900

另外请确保设置如下所示的选项,因为io.set已消失。

var io = require('socket.io')({ pingTimeout: 5000 })

更多信息:http://socket.io/docs/migrating-from-0-9/#configuration-differences

然而,如果这不起作用,很可能离子实际上是在后台保持连接。从大约一年前的一个项目开始,我记得有这样的多个问题,并且当它在后台运行时,它最终强制实现了离子断开插座。