2分钟后断开事件火灾

时间:2015-01-26 19:08:54

标签: node.js socket.io

我正在使用node.js和socket.io来创建聊天应用程序。

socket.on('disconnect',function(data){
    console.log("disconnected");
}

一旦客户端断开连接(标签关闭或网络问题),就会触发此事件。

我希望在与客户端断开连接1分钟后触发disconnect事件。那可能吗? socket.io中有没有配置?

3 个答案:

答案 0 :(得分:2)

该功能未内置于socket.io中。断开套接字时会触发disconnect事件。期。如果你想在断开连接后1分钟触发某些活动,你可以建立自己的计时器。

socket.on('disconnect',function(data){
    setTimeout(function() {
        console.log("disconnected");
    }, 60 * 1000);
}

如果您只想在1分钟内没有重新连接客户端的情况下触发您的事件,那么您也可以对其进行编码,但由于您必须保存setTimeout()和如果特定客户端在计时器触发之前重新连接,则取消它。


根据您在答案中的内容,我认为这是一个改进版本:

(function() {
    var origClose = socket.onclose;
    socket.onclose = function(reason){
      var self = this;
      var args = Array.prototype.slice.call(arguments);

      /* Delay of 1 second to remove from all rooms and disconnect the id */
      setTimeout(function() {
          origClose.apply(self, args);
      }, 60 * 1000);
    }
})();

答案 1 :(得分:0)

您有一些参数可以控制服务器端的这种行为。见close timeoutheartbeat timeout here 如果您使用的是v1.0,则需要在描述的新样式中设置选项here.

请注意,这些在技术上并不符合您的要求 - 它们只会延长客户重新连接的时间。

答案 2 :(得分:0)

在断开事件之前断开连接后立即触发

Socket.onclose。 断开事件可以通过更改如下延迟。

/Users/myuser/thelib/lib/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
/Users/myuser/thelib/lib