Socket.io指定心跳

Kas*_*sen 11 javascript node.js socket.io

我似乎无法找到如何为socket.io设置心跳选项?我希望能够指定"timemout"发生时会发生什么,以及服务器在一段时间内没有得到客户端的任何响应.

由于某种原因,断开连接事件并不总是触发,即使它已经超过一小时没有连接客户端.这通常发生在独立的Java socket.io客户端上

Tho*_*lle 17

Socket.IO使用engine.io,它允许你指定ping间隔和ping超时,如下所示:

var app = require('express')();
var http = require('http').Server(app);

var io = require('socket.io')(http, {'pingInterval': 2000, 'pingTimeout': 5000});
Run Code Online (Sandbox Code Playgroud)

(2秒间隔和5秒超时只是一个例子.它可能会频繁用于您的用例)

  • 如何确定最有效的间隔和超时?默认25秒和60秒对我来说看起来太长或者没问题? (2认同)

WiR*_*iRa 8

对我来说,以下工作:

var app = express(); 
var server = require('http').createServer(app); 
var io = require('socket.io')(server); 

io.set('heartbeat timeout', 4000); 
io.set('heartbeat interval', 2000);
Run Code Online (Sandbox Code Playgroud)

对于包依赖版本:

"express": "^4.12.3",
"socket.io": "1.0"
Run Code Online (Sandbox Code Playgroud)