4

我正在使用一个名为PrivatePub的红宝石宝石,它使用Faye提供 PubSub 消息传递

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

4

1 回答 1

3

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

您将事件侦听器附加到您的服务器,如下所示:

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] – 发布非/meta/** 消息时触发。包括发布者的客户端 ID(可能为 null)、消息发送到的通道和数据负载。

  • disconnect [clientId] – 当客户端会话结束时触发,因为它显式发送了 /meta/disconnect 消息,或者因为它的会话被服务器超时。

我希望这个对你有用

于 2015-12-12T01:22:38.327 回答