首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Meteor:查看某个发布功能订阅了多少个客户端

Meteor:查看某个发布功能订阅了多少个客户端
EN

Stack Overflow用户
提问于 2013-09-11 10:13:14
回答 3查看 1K关注 0票数 3

有没有办法检查当前订阅某个发布函数的客户端的数量?问题是我有不同的组,每个组都有自己独特的ghash。当用户选择离开一个组并进入一个新组时,这个ghash会发生变化,并且订阅相同的发布功能,当然,使用的是不同的ghash。

因此,我正在寻找一种方法来检查每个组/ghash一次订阅了多少个客户端(在服务器端)。我整天都在摆弄像this这样的东西,但老实说,它工作得并不是很好。我也在监听套接字的“不明人物”事件,但还是...这一切都是错误的地狱。

如果有人对我的整个代码感兴趣,你可以找到它的here!(我发现在这里粘贴到我的帖子中太长了。)

我真的希望有人能帮忙!:-)

干杯,P

EDIT:或者换句话说:有没有办法统计当前连接到sockjs websocket的客户端数量,其中所有这些websocket都是用相同的参数调用的?

=========================================================================

编辑2:新版本:LINK

由于某些原因,这根本不起作用……没有进行插入,因为提供给订阅的ghash永远不会等于任何实际的套接字订阅(-->参见LIN20: ghash永远不会等于ghash2)。我只是不明白这怎么可能?每次会话ghash更改时,都会调用整个订阅函数。这个变量怎么可能永远不等于提交给实际套接字的参数呢?(它也总是一个ghash,但总是另一个组的ghash )。

我真的迷路了!:-(

EN

回答 3

Stack Overflow用户

发布于 2013-09-11 13:58:45

我现在看到您正在进行老式的节点风格的socket.io编程。我在node项目中也做过类似的事情。这可能是真正的问题所在。在Meteor的文档中,他们甚至没有使用socket这个词。也许其他人会和你讨论这个新问题,但这个关于跟踪订阅者的问题就是这个答案。

我认为流星是一个新的世界,如果你适应它的思维方式,它会为你处理这些事情的。例如,收集一组消息,并为聊天室设置一个字段。每个客户端选择他们的聊天室,找到这些聊天室({messages.find:‘box5’}),并显示它们。一条新消息会自动发送到正在收听该聊天室的每个客户端。让Meteor为你使用套接字。

对订阅的客户进行计数的答案:

伪代码:创建一个对象来保存每个订阅签名的计数= {}

在注册时,创建一个唯一表示订阅的字符串,将其添加到您的计数对象中。counts‘’params as string‘+= 1;

on signout counts‘’params as string‘-= 1;

知道何时没有人订阅的逻辑是这样的: done = (0 ==将‘’params as string‘计算)

票数 1
EN

Stack Overflow用户

发布于 2013-09-14 10:26:37

显然,据我所知,到目前为止还不可能做到这一点。我做了一些研究,尝试了很多方法,但由于某些原因,有时会打开多个websockets,以便将相同的数据传输到同一个客户端。-->无法通过这种方式统计连接的客户端数。当我的ghash改变时仅仅触发事件也是不够的,因为关闭浏览器窗口不会触发它。

我认为拥有一个计算“查看相同数据变化”的客户端数量的功能(想不出更好的方式来表达它)将是非常棒的。也许一些流星核心开发人员可以在这里输入他/她的2美分,这样我们就可以知道这是否可能。

我希望有人能在某一时刻提出一个解决方案..我不能!:(

票数 0
EN

Stack Overflow用户

发布于 2013-09-16 13:40:26

我的用户状态包通过跟踪全局发布功能的订阅数量来跟踪连接到Meteor应用程序的客户端数量。你也许能从中得到一些启发。它在每个出版物级别上不是细粒度的,但是您当然可以对您感兴趣的出版物做同样的事情。

https://github.com/mizzao/meteor-user-status

需要注意的要点是

  • 每个打开的会话都将调用订阅(用户可能打开了多个选项卡)
  • 每次用户注销时,订阅都会更新
  • 您可以在publish函数中读取每个会话的id
  • 您可以监听SockJS套接字的close事件,以了解浏览器选项卡是否关闭等。

我不认为为小组做这件事太难;我正在为另一个项目做同样的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18731616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档