【问题标题】:How do I list active subscribers using Faye?如何使用 Faye 列出活跃订阅者?
【发布时间】:2026-02-06 04:00:02
【问题描述】:

我正在使用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 也很有趣,但我似乎无法在订阅时发送任何特定数据。

有人遇到过这类问题吗?

【问题讨论】:

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


    【解决方案1】:

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

    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

    【讨论】:

      【解决方案2】:

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

      【讨论】: