微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 如何跟踪Meteor中匿名用户服务器端的数量?

我在Meteor中编写了一个数据敏感的应用程序,并试图限制客户端访问尽可能多的信息.因此,我想实现服务器端计数登录匿名用户数量.

我尝试了各种各样的方法.第一个在这个问题Server cleanup after a client disconnects中概述的,其中提到:

this.session.socket.on("close")

然而,当我做了,并试图改变一个集合,它抛出一个“流星的代码必须始终运行在光纤”错误.我假设这个问题是因为一旦套接关闭,该光纤被杀死,因此访问数据库是不可能的. OP指出这个“Meteor code must always run within a Fiber” when calling Collection.insert on server一个可能的解决方案,但我不知道这是否是最好的方法,根据答案的意见.

然后我尝试对变量进行自动运行:

Meteor.default_server.stream_server.all_sockets().length

但是自动运行从来没有似乎被调用,所以我假设变量不是一个反应的上下文,我不知道如何使它成为一个.

最后一个想法是做一个keepalive风格的事情,但这似乎完全违背了流星哲学的粮食,我认为我只会用作一个绝对的最后手段.

我做了一个console.log的这个函数on.session.socket,唯一的其他功能可能是.on(“data”),但这是不是在socket关闭调用.

在这里有一点损失,所以任何帮助将是伟大的,
谢谢.

解决方法

为了完整起见,最好结合上面的两个答案.换句话说,请执行以下操作:

>保持在Meteor.users的在线状态,而不是单独收集,如https://github.com/erundook/meteor-profile-online
通过回调跟踪断开连接,而不是像https://github.com/murilopolese/howmanypeoplearelooking那样的心跳

这可能是在流星中实现这一点的规范方法.我已经将它创建为一个可以使用陨石安装的智能包:https://github.com/mizzao/meteor-user-status

原文地址:https://www.jb51.cc/js/152054.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐