如何使用Faye列出活跃订阅者?

时间:2012-01-10 17:16:14

标签: ruby-on-rails ruby publish-subscribe faye

我正在使用Faye来发送消息,但效果很好。但我想检索给定频道的活动连接,事情表现略有不同:请参阅“list active subscribers on a channel”。

我想显示当前在一个房间聊天的用户列表。我尝试通过extensions截取/meta/subscribe频道来做到这一点,但我不太确定如何将用户名等数据发送到服务器。

截获/meta/subscribe的邮件如下:

{"channel"=>"/meta/subscribe", "clientId"=>"50k233b4smw8z7ux3npas1lva", "subscription"=>"/comments/new", "id"=>"2"}

发送"username" => "foo"会很高兴。

Monitoring也很有趣,但同样,看起来我无法在订阅上发送任何特定数据。

有没有人有这类问题的经验?

2 个答案:

答案 0 :(得分:8)

您可以使用客户端扩展附加数据:

client.addExtension({
  outgoing: function(message, callback) {
    if (message.channel === '/meta/subscribe') {
      message.ext = message.ext || {};
      message.ext.username = 'username';
    }
    callback(message);
  }
});

然后,您的服务器端扩展程序将显示此数据。但是,在实现之前,请阅读以下主题:https://groups.google.com/group/faye-users/msg/53ff678bcb726fc5

答案 1 :(得分:4)

您是否考虑过创建一个频道来定期发布用户当前订阅的频道?您可以将其视为带有其他状态信息的心跳/ ping,例如可以订阅哪些用户和频道。