2012-01-10 5 views
6

Я использую Faye для отправки сообщений, и он работает хорошо. Но я хочу получить активные соединения для данного канала, и все ведет себя по-другому: см. «list active subscribers on a channel».Как указать активных подписчиков с помощью Faye?

Я хочу показать список текущих пользователей, общающихся в комнате. Я попытался сделать это, перехватив канал /meta/subscribe через extensions, но я не совсем уверен, как отправлять данные, подобные имени пользователя, на сервер.

перехваченное сообщение для /meta/subscribe выглядит следующим образом:

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

Было бы хорошо, чтобы отправить "username" => "foo".

Monitoring тоже интересно, но опять же, похоже, что я не могу отправить какие-либо конкретные данные на подписку.

У кого-нибудь есть опыт работы с этими проблемами?

ответ

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

4

Рассматривали ли вы создание канала для периодической публикации того, к какому каналу подключен пользователь в настоящее время? Вы можете подумать об этом как о сердцебиении/пинге с дополнительной информацией о статусе, такой как пользователь и канал, на которые они могут быть подписаны.