【问题标题】:Socket.io 1.0 : configure close timeoutSocket.io 1.0:配置关闭超时
【发布时间】: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 变量。

谢谢。

【问题讨论】:

    标签: node.js sockets io socket.io


    【解决方案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 是交通工具。
      猜你喜欢
      • 2014-09-01
      • 2014-11-19
      • 2013-02-28
      • 2013-02-01
      • 2014-07-20
      • 2012-02-22
      • 2021-03-13
      • 2012-09-24
      • 1970-01-01
      相关资源
      最近更新 更多