【问题标题】:Node.js + Socket.io: Detect client-side when user has disconnected due to inactivityNode.js + Socket.io:当用户因不活动而断开连接时检测客户端
【发布时间】:2018-07-23 14:51:08
【问题描述】:

当用户由于不活动而断开连接时,我想检测客户端。对我来说,使用 disconnect() 事件不起作用,因为它包含除不活动之外的其他形式的客户端断开连接。

我当前的代码:

var socket = io.connect();

socket.on("disconnect", () => {
    console.log("You have been disconnected from the match.");
});

【问题讨论】:

  • 作为一个自发的想法:使用setTimeout 并在用户每次在您的页面/应用程序上执行某些操作时重新启动它。如果超时最终触发,则用户处于非活动状态并断开连接,二人处于非活动状态。

标签: javascript node.js socket.io


【解决方案1】:

这可能会对您有所帮助!

var socket = io.connect();

socket.on("disconnect", () => {
    //it emits a logoff event
    socket.emit("logoff", { reason: "Disconnected due to inactivity" });
    console.log("You have been disconnected from the match.");
});

【讨论】:

  • 不幸的是,这不起作用。我只希望在客户端因不活动且仅不活动而断开连接时触发事件,
【解决方案2】:

在您的服务器端:

io.on('connection', function(socket){
  socket.on('disconnect', function(){
    console.log('user disconnected'); // client has been disconnected, client maybe has many connections.
  });
});

或者,客户端通过http请求通知服务器它已经断开连接。

var socket = io.connect();

socket.on("disconnect", () => {
    console.log("You have been disconnected from the match.");
    $.post('http://serverdomain/socket/' + socket.id + '/disconnected') // Just make a http request,
    // example by jQuery
});

【讨论】:

  • 不幸的是,这不起作用。我只希望在客户端因不活动且仅不活动而断开连接时触发事件。
猜你喜欢
  • 2012-05-17
  • 2015-11-21
  • 2017-07-17
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
相关资源
最近更新 更多