服务器上的Meteor客户端断开连接事件

Meteor client disconnected event on server

本文关键字:断开 连接 事件 客户端 Meteor 服务器      更新时间:2023-09-26

简单的问题,也许是简单的答案:我如何在服务器上知道某个客户端已断开连接?基本用例:发球需要知道球员是否断开了连接。

在publish函数中,您可以观察套接字关闭事件,如下所示。

this.session.socket.on "close", -> # do your thing
 Meteor.publish("yourPublishFunction", function()
        {
            var id = this._session.userId;
            this._session.socket.on("close", Meteor.bindEnvironment(function()
            {
              console.log(id); // called once the user disconnects
            }, function(e){console.log(e)}));
            return YourCollection.find({});
        });

我创建了一个非常全面的包来跟踪每个用户的所有登录会话,以及他们的IP地址和活动:

https://github.com/mizzao/meteor-user-status

要注意断开连接,您只需执行以下操作,即可捕获注销和浏览器关闭:

UserStatus.on "sessionLogout", (userId, sessionId) ->
  console.log(userId + " with session " + sessionId + " logged out")

您也可以检查代码并为自己做类似的事情。

可能(在服务器代码中)

Meteor.default_server.sessions.length

Meteor.default_server.stream_server.open_sockets.length

您可以做一件事,在服务器上创建一个事件,并使用ajax从浏览器调用它,ajax在一个小的时间间隔后调用settimeinterval并将会话值放入头中,如果服务器没有收到用户的请求,则意味着他放弃了连接