2015-12-02 7 views
4

Я использую рубин драгоценный камень под названием PrivatePub и это использует Faye предложить PubSub обмен сообщениямКак я могу найти номер текущей подписки с использованием PrivatePub и Фей в рельсах

Жемчужина PrivatePub предлагает несколько помощников на основе просмотра, чтобы подписаться/отправить сообщение по определенной теме. Я хочу расширить PrivatePub, чтобы включить вызов API, который даст мне идентификатор каждого из текущих объектов подписки, связанных с Faye. Может кто-нибудь объяснить, как это может быть достигнуто, или помочь мне найти другой способ выработать все текущие подписки из PrivatePub api.

+1

Этот камень не был сохранен в 3-х лет. Вы можете захотеть взглянуть на более современные решения. Драгоценный камень был написан для рельсов 3, мы собираемся получить рельсы 5. – miler350

+0

Он работает и решает проблему, в которой я нуждался. Он по-прежнему работает на Rails 4, поэтому я не вижу необходимости в полностью меняющихся драгоценных камнях, это просто небольшое расширение того, что уже существует. – RenegadeAndy

ответ

3

Начиная с версии 0.7, Faye включает в себя API для мониторинга активности, происходящей внутри двигателя. Это означает, что вы можете присоединить прослушиватели событий для мониторинга создания и уничтожения клиентских сеансов, узнавать, когда подписываются клиенты и отписываются от каналов, а также просматривать опубликованные сообщения.

Вы придаете прослушиватель событий на сервер так:

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

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

Доступные события:

  • рукопожатие [ClientId] - Вызывается, когда новый клиент подключается и выдается с идентификатором.

  • подписаться на [clientId, channel] - Запускается, когда клиент подписывается на канал. Это не срабатывает, если получено сообщение/meta/subscribe для уже существующей подписки.

  • отписаться [clientId, channel] - Запускается, когда клиент отказывается от канала. Это может привести к пожару либо потому, что клиент явно отправил сообщение/meta/unsubscribe, либо потому, что его сеанс был отключен сервером.

  • Публиковать [clientId, channel, data] - Запускается, когда публикуется сообщение non/meta/**. Включает идентификатор клиента издателя (который может быть нулевым), канал, на который было отправлено сообщение, и полезную нагрузку данных.

  • разъединение [ClientId] - Срабатывает, когда клиент сессии заканчивается, либо потому, что он явно послал/мета-сообщение о разъединении/или потому, что его сессии истекло сервером.

Я надеюсь, что это помогает

+0

Итак, в каком приложении я помещаю этот код? Должно ли оно войти в приложение, которое запускает Faye, или оно должно появиться в приложении с помощью клиентского камня PrivatePub? – RenegadeAndy

+0

Вы видели http://faye.jcoglan.com/ruby/monitoring.html – MZaragoza