如何在注销的客户端上捕获Meteor.LogoAutotherClient(会话丢失?)

如何在注销的客户端上捕获Meteor.LogoAutotherClient(会话丢失?),meteor,meteor-accounts,Meteor,Meteor Accounts,我正在努力确保我的用户在任何时候都不会让太多的设备/浏览器连接到我们的web应用程序 但是,我不知道如何合理地利用Meteor.LogoAutootherClient Accounts.onLogin(function () { Meteor.logoutOtherClients(function(error){ // stuff }); }); 如果我调用logoutOtherClients,它确实会强制终止与服务器的连接。但是,它不会更新该客户端的Meteor.

我正在努力确保我的用户在任何时候都不会让太多的设备/浏览器连接到我们的web应用程序

但是,我不知道如何合理地利用Meteor.LogoAutootherClient

Accounts.onLogin(function () {
    Meteor.logoutOtherClients(function(error){
       // stuff
   });
});
如果我调用
logoutOtherClients
,它确实会强制终止与服务器的连接。但是,它不会更新该客户端的
Meteor.userId
或登录状态。它仍然显示相同的
Meteor.userId
和角色等。这反过来又使得你很难抛出任何你已经注销的这类消息。。。如何检测会话何时被终止以提醒客户端?

由于
Meteor.userId()
是客户端上的反应变量,请尝试使用
Tracker.autorun
捕获Meteor.userId()的状态


一个原因是,如果用户未登录,将不会发布任何内容的发布不会返回
this.ready()

Meteor.publish("myCollections", function (){
    if(this.userId){
       return MyCollections.find({owner: this.userId});
    }
    return this.ready(); // <--- This is the important piece to remember
});
Meteor.publish(“myCollections”,函数(){ if(this.userId){ 返回MyCollections.find({owner:this.userId}); }
返回此.ready();//这正是我想说的。
Meteor.userId()
没有进行反应性更新。我只是在该客户端上失去了连接,其他什么都没有发生。如果我在客户端控制台上键入本应“注销”的
Meteor.userId()
,我只是看到一切原样。ID、配置文件、角色等没有改变。它只是此时没有与服务器的连接。所有请求都已死亡。实际上,我的
帐户中已经有了上述代码。onLogin
@btbJosh您有没有找到解决方案?我发现了同样的问题,当resumeToken过期时,或者调用时在登录其他客户端时,其他已连接的客户端表示它们已连接并登录,但所有方法调用和订阅都只是排队,永远不会完成。我甚至可以在控制台上断开连接并重新连接,连接良好,但客户端上的Accounts包仍然认为它已登录。我也有同样的问题,一个nd在这里找到了解决方案:确保
在所有发布的末尾返回this.ready()
,尤其是那些具有
if(this.userId){}
。我必须检查这是否与我所遇到的问题有关。我现在已经放弃了它,因为我已经转到了其他一些更大的问题。感谢您发布这篇文章。
Meteor.publish("myCollections", function (){
    if(this.userId){
       return MyCollections.find({owner: this.userId});
    }
    return this.ready(); // <--- This is the important piece to remember
});