Компонент xmpp: отправлять сообщения, только если jid онлайн - PullRequest
2 голосов
/ 17 августа 2010

Я кодирую компонент xmpp, используя http://xmppjs.prosody.im/. Я хочу отправить сообщение jid, но только если пользователь онлайн. Какой самый быстрый / самый эффективный способ добиться этого.

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

1 Ответ

4 голосов
/ 19 августа 2010

Отправьте сообщение с типом = 'заголовок' независимо от того, включен ли JID.Заголовочные сообщения не должны храниться для последующей доставки, если получатель находится в автономном режиме.

Этот подход намного быстрее и более переносим, ​​чем все, что вы можете сделать.

Если вы ДОЛЖНЫ сделать что-то другое в зависимости от того, находится ли пользователь в сети, вам нужно подписаться на присутствие этого пользователя:

<presence type='subscribe' from='my.component' to='user@domain'/>

Пользователь должен будет принять ваш запрос:

<presence type='subscribed' to='my.component' from='user@domain'/>

Пользователь также может подписаться обратно на ваш компонент:

<presence type='subscribe' to='my.component' from='user@domain'/>

Вы можете делать с ними то, что выбираете;самое простое, что можно сделать, это просто принять их:

<presence type='subscribe' from='my.component' to='user@domain'/>

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

<presence type='probe' from='my.component' to='user@domain'/>

Затем вы вернете присутствие каждого из ресурсов пользователя.Невозможно сказать, когда вы закончите.Если вы хотите действовать, когда пользователь находится в автономном режиме, вам просто нужно выбрать значение тайм-аута, а затем остановить таймер, если вы получаете присутствие.Так как пользователь в любом случае находится в автономном режиме, дополнительная задержка обычно не представляет большой проблемы.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...