我正在使用node.js和socket.io来创建聊天应用程序。
socket.on('disconnect',function(data){
console.log("disconnected");
}
一旦客户端断开连接(标签关闭或网络问题),就会触发此事件。
我希望在与客户端断开连接1分钟后触发disconnect事件。那可能吗? socket.io中有没有配置?
答案 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 timeout
和heartbeat timeout
here
如果您使用的是v1.0,则需要在描述的新样式中设置选项here.
请注意,这些在技术上并不符合您的要求 - 它们只会延长客户重新连接的时间。
答案 2 :(得分:0)
Socket.onclose。 断开事件可以通过更改如下延迟。
/Users/myuser/thelib/lib/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
/Users/myuser/thelib/lib