我正在Meteor中编写一个对数据敏感的应用程序,并试图限制客户端访问尽可能多的信息。因此,我想在服务器端实现一种计算已登录用户和匿名用户数量的方法。
我尝试了多种方法。正如问题Server cleanup after a client disconnects概述的那样,第一个问题建议连接到:
this.session.socket.on("close")
但是,当我这样做并尝试更改集合时,它抛出“ meteor 代码必须始终在光纤中运行”错误。我认为这个问题是因为一旦关闭套接字,光纤就会被杀死,因此无法访问数据库。 OP指出此"Meteor code must always run within a Fiber" when calling Collection.insert on server是一种可能的解决方案,但是根据答案的注释,我不确定这是否是最佳方法。
然后,我尝试对变量自动运行:
Meteor.default_server.stream_server.all_sockets().length
但是似乎从未调用过自动运行,因此我假设该变量不是 react 性上下文,并且我不确定如何使它成为一个。
最后一个想法是做一个保持活力的风格的事情,但这似乎完全与 meteor 哲学背道而驰,我想我只会把它作为绝对的不得已的手段。
我对
console.log
上的函数做了this.session.socket
,并且唯一可能的其他函数是.on("data")
,但是在关闭套接字时不会调用此函数。我在这里有点茫然,所以任何帮助都会很棒,
谢谢。
最佳答案
为了完整起见,最好将以上两个答案结合起来。换句话说,请执行以下操作:
Meteor.users
中这可能是在Meteor中实现此目标的规范方法。我已将此创建为可与Meteorite一起安装的智能软件包:https://github.com/mizzao/meteor-user-status
关于javascript - 如何在Meteor中跟踪服务器端匿名用户的数量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13544333/