Наличие XMPP в реестре
У меня проблема с механизмом составления реестра, и я использую библиотеку JSJaC javascript.
Мое дело:
Пользователь A имеет простой список, который содержит другого пользователя B с подпиской "оба". Пользователь B имеет такую же конфигурацию.
Когда пользователь A зарегистрирован в openfire, я вызываю свою функцию "getRoster()", которая возвращает список друзей пользователя (в моем случае, только пользователя B), но как я могу проверить, доступен ли в данный момент пользователь B для чата?
Я вижу, что есть некоторые механизмы присутствия, но я не понимаю, как я могу их использовать.
Извините за мой плохой английский. Благодарю.
2 ответа
Когда вы отправляете свое присутствие на сервер, сервер начинает отправлять вам все присутствия ваших подписанных контактов. Вы должны рассматривать все контакты как автономные по умолчанию.
Я не знаком с JSJaC, но, вероятно, есть обратный вызов, когда присутствие приходит.
Вы должны зарегистрировать presence
обработчик. Предполагая, что у вас есть реестр как массив пользовательских данных, вы можете сделать это следующим образом:
xmpp.registerHandler 'presence', (response) ->
user = _.find @roster, jid: (response.getFrom().split '/').shift()
if user
if response.getType() is 'unavailable'
user.online = no
else
user.online = yes