如何在 rails 中使用 PrivatePub 和 Faye 查找当前订阅数

How can I find the number of current subscriptions using PrivatePub and Faye in rails

我正在使用名为 PrivatePub and this uses Faye 的 ruby gem 来提供 PubSub 消息传递

PrivatePub gem 提供了几个基于视图的助手来订阅/发送消息到特定主题。我希望扩展 PrivatePub 以包含一个 API 调用,它将为我提供连接到 Faye 的每个当前订阅对象的 ID。有人能解释一下这是如何实现的,或者帮我找到另一种方法来计算 PrivatePub api.

中的所有当前订阅吗?

从 0.7 版开始,Faye 包含一个 API 用于监控引擎内发生的 activity。这意味着您可以附加事件侦听器来监视客户端会话的创建和销毁,了解客户端何时订阅和取消订阅频道,以及查看发布的消息。

您像这样将事件侦听器附加到您的服务器:

var bayeux = new Faye.NodeAdapter({mount: '/faye', timeout: 45})

bayeux.on('handshake', function(clientId) {
  // event listener logic
})

可用的事件是:

  • handshake [clientId] – 当新客户端连接并获得一个 ID 时触发。

  • subscribe [clientId, channel] – 客户端订阅频道时触发。如果收到已存在的订阅的 /meta/subscribe 消息,则不会触发此事件。

  • unsubscribe [clientId, channel] – 当客户端取消订阅频道时触发。这可能会触发,因为客户端明确发送了一条 /meta/unsubscribe 消息,或者因为它的会话被服务器超时。

  • publish [clientId, channel, data] – 在发布 non-/meta/** 消息时触发。包括发布者的客户端 ID(可能为空)、消息发送到的通道和数据负载。

  • disconnect [clientId] – 在客户端会话结束时触发,可能是因为它明确发送了 /meta/disconnect 消息,也可能是因为它的会话是定时的由服务器输出。

希望对您有所帮助