5

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

4

5 回答 5

4

在发布功能中,您可以按如下方式观看套接字关闭事件。

this.session.socket.on "close", -> # do your thing
于 2012-09-20T03:09:31.630 回答
4
 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({});
        });
于 2013-08-19T14:16:55.390 回答
3

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

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

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

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

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

于 2013-08-03T03:18:33.940 回答
1

也许(在服务器代码中)

Meteor.default_server.sessions.length

或者

Meteor.default_server.stream_server.open_sockets.length
于 2012-09-11T22:27:47.227 回答
0

你可以做一件事在服务器上创建一个事件并使用 ajax从浏览器调用它,在一些小的时间间隔 settimeinterval使用会话值到标头后调用它,如果服务器没有从用户那里得到请求,这意味着他断开了连接

于 2012-09-08T20:05:29.147 回答