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

标签 javascript meteor

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

我尝试了多种方法。第一个是这个问题中概述的 Server cleanup after a client disconnects ,这表明 Hook 到:

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

但是,当我这样做并尝试更改集合时,它抛出了“Meteor 代码必须始终在 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

但 autorun 似乎从未被调用过,所以我假设该变量不是 react 性上下文,而且我不确定如何将其变成一个。

最后的想法是做一个 keepalive 风格的事情,但这似乎完全违背了 Meteor 的理念,我认为我只会作为绝对的最后手段使用。

我对 this.session.socket 上的函数做了一个 console.log,唯一可能的函数是 .on("data") ,但是当套接字关闭时不会调用它。

我在这里有点不知所措,所以任何帮助都会很棒, 谢谢。

最佳答案

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

这可能是在 Meteor 中实现它的规范方式。我将其创建为一个智能包,您可以使用 Meteorite 安装它:https://github.com/mizzao/meteor-user-status

关于javascript - 如何在 Meteor 中跟踪匿名用户服务器端的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13544333/

相关文章:

javascript - 为什么 if(number <=10) 不起作用?

javascript - meteor :oncreated 与 onrendered

node.js - Meteor.setTimeout 不会造成延迟

ios - meteor 应用程序 : Difference Between Uploading Images from Iphone than Computer?

JavaScript 单击事件不会改变样式

javascript - 如何在 Electron 中的单个窗口中渲染多个 HTML 文件?

javascript - Meteor.js facebook 使用 'apple-mobile-web-app-capable' 登录

meteor - PM2 + Meteor 不工作

javascript - 上传后未显示上传警报

javascript - 如何在 Metro Windows 8 中找到应用栏的图标?