Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 服务器上的Meteor客户端断开连接事件_Javascript_Meteor - Fatal编程技术网

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

Javascript 服务器上的Meteor客户端断开连接事件,javascript,meteor,Javascript,Meteor,简单的问题,也许简单的回答:我如何知道服务器上的某个客户端已断开连接?基本用例:发球者需要知道是否有球员断开了连接。你可以做一件事,在服务器上创建一个事件,并使用ajax从浏览器调用它,在一个小时间间隔后调用settimeinterval,将会话值放入报头,如果服务器没有收到用户的请求,则调用它表示他可能断开了连接(在服务器代码中) 或 在publish函数中,您可以按如下方式查看套接字关闭事件 this.session.socket.on "close", -> # do your th

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

你可以做一件事,在服务器上创建一个事件,并使用ajax从浏览器调用它,在一个小时间间隔后调用settimeinterval,将会话值放入报头,如果服务器没有收到用户的请求,则调用它表示他可能断开了连接(在服务器代码中)


在publish函数中,您可以按如下方式查看套接字关闭事件

this.session.socket.on "close", -> # do your thing

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

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

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

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

尝试一下,如果您遇到了问题,请告诉我您刚刚在该线程上添加了一种跟踪用户连接状态的替代方法,为什么使用
Meteor.bindEnvironment
?…在大多数情况下可能没有用,我可以想象我在我的原始代码中使用了它,只是忘记在SO帖子中删除它。会话变量的正确名称是
\u session
 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({});
        });
UserStatus.on "sessionLogout", (userId, sessionId) ->
  console.log(userId + " with session " + sessionId + " logged out")
 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({});
        });