2016-06-06 5 views
1

Я использую приложение openfire для чата на iOS и php-сайте. и все работает нормально.Уведомление о запуске openfire/триггер

Я также внедрил push-уведомления, когда пользователь оппонента находится в автономном режиме, и вы отправляете сообщение этому пользователю (в коротком push-уведомлении для автономного сообщения). Я реализовал выше материал, который доступен здесь: Openfire offline notification through PHP

Теперь клиент просит меня реализовать еще одну особенность, которая включает в себя:

  • Отправить письмо администратору, когда любой пользователь переходит в автономный режим.

Но теперь нет никакого крючка для отслеживания статуса пользователя. Итак, как реализовать то же самое?

То, что я пытался

Я также попробовал один трюк, в котором я посылаю широковещательного сообщения всем пользователям, и если какой-либо пользователь offile тогда мой CallbackOnOffline плагин будет ссылаться, но здесь его не посылает широковещательный сообщение для пользователей offline.

ответ

1

Вы можете дать попробовать на пакетную Presence «перехватывать» с Presence.Type.unavailable

Openfire имеет ConnectionCloseListener (в классе SessionManager), запускающего присутствие недоступный.

Если вы читаете комментарии класса, он говорит

// Send an unavailable presence to the user's subscribers 
    // Note: This gives us a chance to send an unavailable presence to the 
    // entities that the user sent directed presences 

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

С противоположной логикой вы будете в состоянии заставить прямое присутствие на что-то вы контролировать и перехватывают присутствия-недоступных для этого объекта

+0

Я 100% согласен с вашей логикой, но проблема здесь мне нужно чтобы один пользователь вошел в систему все время в браузере, где я могу реализовать прослушиватель и на этом можно запустить ajax. Но что, если никто не войдет в систему и не хочет отслеживать присутствие пользователей ??? можно ли запускать любой URL-адрес так же, как плагин CallbackOnOffline? –

+0

С Openfire (так что я ставлю также на любом другом сервере), вы можете перехватить какую-то Stanza (Presence) и при необходимости добавить фильтр (пример: «to = admin @ adminmessages»). Таким образом, просто перехватите любое объявление Присутствия, добавьте его или добавьте администратора и по умолчанию (вы можете дублировать Присутствие или просто заставить подписку и так далее). Теоретически вам не нужно, чтобы клиент всегда был в сети, вам просто нужно добавить необходимое условие, чтобы Openfire отправлял Присутствие. Вы перехватите присутствие перед тем, как openfire «осознает» admin он находится в автономном режиме – MrPk

+0

«добавьте необходимое условие, чтобы Openfire отправил Присутствие», но вот отправить кому? Я хочу назвать один скрипт php в автономном режиме, возможно ли это? –

Смежные вопросы