我使用http://xmppjs.prosody.im/编写了一个xmpp组件。我想发送消息给jid,但仅限用户在线。什么是实现这一目标的最快/最有效的方法。
我想检测一下,以便我可以在用户离线时发送电子邮件。
答案 0 :(得分:4)
使用type ='headline'发送消息,无论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'/>
然后您将返回每个用户资源的存在。没有办法告诉你什么时候完成。如果要在用户离线时执行操作,则只需选择超时值,然后在收到状态时停止计时器。由于用户离线无论如何,额外的延迟通常不是一个大问题。
请注意,如果您接受了上述用户的在线订阅,您将获得该用户的探测;您可以忽略它们,也可以使用描述您的运行状态的状态响应进行响应。