我正在使用Meteor编写一个数据敏感型的应用程序,并尽可能限制客户端对信息的访问。因此,我想在服务器端实现一种计算已登录和匿名用户数量的方法。
我尝试了各种方法。第一种是根据这个问题中提到的方式 Server cleanup after a client disconnects,建议连接到:
this.session.socket.on("close")
然而,当我尝试更改集合时,它抛出了一个“Meteor code must always run within a Fiber”错误。我认为这个问题是因为一旦套接字关闭,该Fiber就被杀死了,因此无法访问数据库。 OP指出这个 "Meteor code must always run within a Fiber" when calling Collection.insert on server 可能是一个解决方法,但根据回答的评论,我不确定这是否是最佳方法。然后我尝试对该变量进行自动运行:
Meteor.default_server.stream_server.all_sockets().length
但是自动运行似乎从未被调用,所以我认为该变量不是反应性上下文,并且我不确定如何使其成为反应性上下文。
最后的想法是做一个保持活动的样式,但这似乎完全违背了Meteor的理念,我认为只有在绝对需要时才会使用它。
我在this.session.socket
上进行了console.log
函数,唯一可能的其他函数是.on("data")
,但当套接字关闭时不会调用此函数。
我有点茫然无措,所以任何帮助都将是巨大的, 谢谢。
Meteor.users
中跟踪匿名用户,但是他们的连接都被跟踪。 - Andrew Maomizzao:meteor-user-status
包,获取匿名用户数量就像查询内存中的UserStatus.connections
集合一样容易,查询没有userId
的连接即可...UserStatus.connections.find({userId: {$exists: false}}).count()
- evolross