Определите, подключен ли пользователь XMPP к сети или нет - PullRequest
4 голосов
/ 17 сентября 2010

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

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

Ответы [ 3 ]

2 голосов
/ 17 сентября 2010

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

1 голос
/ 24 сентября 2010

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

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

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

0 голосов
/ 22 декабря 2010

Возможно, вы захотите увидеть вопрос «Бот Jabber - как получить доступность контактов?» . Если я правильно понял ваш вопрос, я думаю, что он связан с ним.

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

...