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

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

我有一个 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/

相关文章:

php - Laravel 和 angularjs 表单验证

angularjs - AngularJS 中函数的 promise 返回值

Javascript:在 Node.js 对象内调用函数

javascript - 类更改时不会调用指令 $watch

javascript - Angular 过滤器按 $index 添加项目

javascript - 如何指向 Node 服务器以提供索引文件 1 路径?

javascript - 并且不与 Loopback 中的其他查询字段一起使用

node.js - npm 在安装不是我指定的模块时出现错误

javascript - 在使用新数据的 jQuery POST 请求后重新呈现 EJS 模板

javascript - 尝试从 Express JS 项目中的另一条路线调用现有路线时出现问题