Наличие 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
Другие вопросы по тегам