Socket.io 1.0:配置关闭超时

Posted

技术标签:

【中文标题】Socket.io 1.0:配置关闭超时【英文标题】:Socket.io 1.0 : configure close timeout 【发布时间】:2014-12-15 13:14:35 【问题描述】:

如何使用以下代码配置“关闭超时”选项?

 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 变量。

谢谢。

【问题讨论】:

【参考方案1】:

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

io.set('heartbeat timeout', 10) 也可以,但set 将来会被删除。

【讨论】:

【参考方案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); 

【讨论】:

io.set() 自 socket.io 1.0 以来已弃用,我不能使用它 '服务器['关闭超时'] = 60;'这不是一个坏主意,但它不起作用。我想知道我做事是否正确-_-' 我已经尝试过 'var io = require('socket.io')(server, 'close timeout': 60);' => 没用 :( 这很奇怪,这就是为什么我想知道我是否做错了什么...... 我不是 socket.io 专家,但我去检查了it's source,但找不到“关闭超时”。如果此选项在新版本中被禁止,那么应该有更好的方法来实现您正在尝试做的事情...... @user3146857 - socket.io 建立在 engine.io 之上。 engine.io 是交通工具。

以上是关于Socket.io 1.0:配置关闭超时的主要内容,如果未能解决你的问题,请参考以下文章

在 socket.io 上设置高关闭超时是不是安全?

nodejs socket 怎么检测客户端主动断开连接

如何通过 socks5 代理使用 JavaScript socket.io-client 库?

为 socket.io 和 SSL / WSS 配置 Apache

socket.io heroku 请求超时

Socket.io 与 flask-socketio python。如何设置套接字保持活动/超时