2014-10-20 72 views
3

如何使用下面的代码配置“关闭超时”选项?Socket.io 1.0:配置关闭超时

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

你见过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

io.set()自socket.io 1.0开始已弃用,我无法使用 – user3146857 2014-10-20 14:13:08

+2

'server ['close timeout'] = 60;''这不是一个坏主意,但它不起作用。我想知道如果我正确地做事 - '' – user3146857 2014-10-20 14:31:14

+1

我已经尝试过'var io = require('socket.io')(server,{'close timeout':60});' =>没有工作:(这很奇怪,这就是为什么我想知道如果我做错了什么... – user3146857 2014-10-20 14:52:42

0

根据最新版本。 { pingTimeout: 60000}适合我。

io.set('heartbeat timeout', 10)也适用,但set将在未来删除。