Socket.io 1.0:配置关闭超时

时间:2014-10-20 14:05:45

标签: node.js sockets io socket.io

如何配置选项'关闭超时'用下面的代码?

 var app = require('express')();
 var server = require('http').Server(app);
 var io = require('socket.io')(server);
 ...
 server.listen(port, ip);     

我阅读了有关socket.io的文档,我发现:

 var socket = require('socket.io')({
     // options go here
 });

但我无法添加选项,因为我使用server变量。

感谢。

2 个答案:

答案 0 :(得分:2)

你见过this吗?

var io = require('socket.io').listen(80);
io.set('close timeout', 60);
io.set('heartbeat timeout', 60);

也许像

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
io.set('close timeout', 60);
server.listen(port, ip); 

编辑:这是一个很长的镜头,但是:

var app = require('express')();
var server = require('http').Server(app);
server['close timeout'] = 60;
var io = require('socket.io')(server);
server.listen(port, ip); 

修改socket.io docs上找到了这个:

// pass a server and the `serveClient` option
var io = require('socket.io')(http, { serveClient: false });

那么,这个怎么样?

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server, { 'close timeout': 60});
server.listen(port, ip); 

另一个编辑: 再次docs

  

传递给socket.io的相同选项总是传递给   engine.io创建的服务器。请参阅engine.io options作为参考。

pingTimeout (Number): how many ms without a pong packet to consider the connection closed (60000)

你能试试吗?

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server, { pingTimeout: 60000});
server.listen(port, ip); 

答案 1 :(得分:0)

根据最新版本。 { pingTimeout: 60000}对我来说很好。

io.set('heartbeat timeout', 10)同样适用,但set将来会被移除。