我有一个 node.js 服务器,我正在使用 socket.io 在服务器和客户端之间进行实时通信。我观察到,如果移动客户端(使用 Ionic Framework)突然断开连接,而不让服务器知道,套接字会存活数小时(或永远)。我已经阅读并查看了他们的文档,他们有类似的选项
pingInterval,pingtimeout,心跳间隔,心跳超时,关闭超时
。
如何在我的服务器上配置这些值?
哪些值已被弃用?
这是我的代码。
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: I am splicing sockets of my collection when a client disconnects and it works just fine when clients tell server that they want to disconnect gracefully.
最佳答案
您必须按照此处所述使用 pingTimeout
:
https://github.com/Automattic/socket.io/issues/1900
还要确保像下面这样设置你的选项,因为 io.set 已经不存在了。
var io = require('socket.io')({
平超时:5000
})
更多信息:http://socket.io/docs/migrating-from-0-9/#configuration-differences
但是,如果这不起作用,很可能是 ionic 实际上在后台保持连接。从大约一年前的一个项目中,我记得有多个这样的问题,并最终在它进入后台时强行制作 ionic disconnect socket。
关于angularjs - 在服务器上配置心跳超时、心跳间隔和关闭超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31323220/