2010-09-17 4 views
4

Я использую библиотеку xmpppy, чтобы написать клиент XMPP, который может общаться с пользователями. Он имеет собственную учетную запись пользователя XMPP и должен знать, находится ли данный пользователь в сети. Тем не менее, документация немного разрежена в отношении того, как это сделать. Чтобы вы посоветовали?Определить, является ли пользователь XMPP онлайн или нет

Единственным решением, которое я видел до сих пор, является запуск демона до запуска XMPP-сервера и мониторинга всех сообщений присутствия, которые отправляются - тогда пользователь, как говорят, находится в сети, если они отправили сообщение «I 'm online', но не соответствующее сообщение «I'm logged off». Однако, будучи новичком в XMPP в целом, я думаю, что было бы лучше сделать это.

+0

http://stackoverflow.com/questions/5300912/how-to-list-only-online-users-on-facebook-with-xmpp-framework проверить мою почту. Я сделал это для facebook и gtalk – Rakesh

ответ

2

Простым способом является поддержка сообщения о присутствии «подписаться» - это позволяет другому пользователю проверить, присутствует ли в данный момент (если они еще не знают) путем попытки «подписаться». Для начала ознакомьтесь с this useful guide и the standard для получения более подробной информации (например, о защите вашей конфиденциальности, если необходимо, от подписки на запросы от пользователя, которого вы не знаете).

+0

Отличные ссылки. Спасибо за помощь! –

+0

@ Крис, пожалуйста! –

1

Существует три способа подключения к XMPP-серверу: как клиент (который вы сделали), как компонент, так и как другой сервер. Тип сервера-сервера (s2s) - это всего лишь федеративное соединение, очень похоже на то, как почтовые серверы обмениваются электронной почтой друг с другом.

Алекс описал, как клиенты отслеживают присутствие. XMPP требует, чтобы я одобрил, что вы можете получать информацию о моем присутствии и наоборот. Для вашего бота это означает, что вы должны отслеживать, кто в сети, конечные пользователи должны принимать ваши запросы на присутствие. Это также означает, что вы можете отвечать на запросы присутствия пользователя и информировать их о том, был ли ваш бот включен или нет.

Последний способ является надежным компонентом и работает только при запуске сервера. т. е. если вы пытаетесь сделать это на сервере jabber.org, вам не повезло, потому что вы не используете этот сервер. Upsdie - вы можете иметь доступ к внутренним возможностям сервера XMPP, например, вытягивать списки всех, кто находится в сети. Недостатком является то, что реализация компонента/бота будет отличаться для каждой реализации сервера.

+0

Да, я действительно закончил тем, что пошел по последнему маршруту. Я просто опросил ejabberd, чтобы узнать всех, кто в сети, так как это было намного проще, чем клиент отслеживал его и мою программу, опросив его. Будучи новичком в XMPP в целом, я подумал, что в библиотеке xmpppy будет более простой способ, но это оказалось не так - отличный ответ! –

0

Возможно, вы захотите увидеть вопрос "Jabber bot - how to get the availability of contacts?". Если я правильно понял ваш вопрос, я думаю, что это связано с этим.

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

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

  • Нет связанных вопросов^_^