Бот Jabber - как получать обновления присутствия? - PullRequest
0 голосов
/ 22 февраля 2012

Я использую следующий код для подключения к серверу xmpp (python + xmppy):

  c = xmpp.Client("localhost", debug=[])
  c.connect(("127.0.0.1", 5222))
  c.auth("test","test")
  c.sendInitPresence()
  c.send(xmpp.Presence(to="admin@localhost", typ='subscribe'))
  time.sleep(1000)

Это работает просто отлично, администратор получает обновление присутствия и в контактах "тестовый" пользовательотображается как онлайн.Проблема возникает, если я нажимаю Ctrl + C в этом скрипте (когда он спит в конце), поэтому он прекращается.Проблема в том, что пользователь-администратор не получает обновления присутствия из этого сценария.

Я должен также упомянуть, что пользователь-администратор принимает запросы на подписку автоматически.

Мой вопрос: как можетАдминистратор обнаружил, что тестовый пользователь отключился.И изменение вышеуказанного скрипта не вариант, так как любой может написать это и создать программу на моем сервере xmpp.

Любые идеи, почему администратор не получает обновления присутствия или как определить, что тест пользователя'оффлайн добро пожаловать.

Спасибо

1 Ответ

1 голос
/ 23 февраля 2012

Обнаружение того, что конечная точка перешла в автономный режим без определенного обновления присутствия, обычно обрабатывается сервером, например. обнаружение того, что сокет, с которым взаимодействует конечная точка, был закрыт.

Если у вас есть только контроль над клиентским кодом, вы можете отправлять случайные зонды присутствия от клиента администратора на все его подписанные конечные точки.

...