我有一个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:当客户端断开连接时,我正在拼接我的集合的套接字 当客户告诉服务器他们想要的时候,它工作得很好 优雅地断开。
答案 0 :(得分:1)
您必须使用此处提到的pingTimeout
:
https://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
然而,如果这不起作用,很可能离子实际上是在后台保持连接。从大约一年前的一个项目开始,我记得有这样的多个问题,并且当它在后台运行时,它最终强制实现了离子断开插座。