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

前端之家收集整理的这篇文章主要介绍了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

猜你在找的JavaScript相关文章