xmpp组件:仅在jid联机时发送消息
我正在使用编写一个xmpp组件。我想向jid发送消息,但前提是用户在线。实现这一目标的最快/最有效的方法是什么xmpp组件:仅在jid联机时发送消息,xmpp,Xmpp,我正在使用编写一个xmpp组件。我想向jid发送消息,但前提是用户在线。实现这一目标的最快/最有效的方法是什么 我希望检测到这一点,例如,当用户脱机时,我可以发送一封电子邮件。发送带有type='headline'的消息,而不管JID是否联机。如果收件人处于脱机状态,则不应存储标题邮件以供以后发送 这种方法比你能做的任何事情都更快、更便于携带 如果您必须根据用户是否在线执行不同的操作,则需要订阅该用户的状态: <presence type='subscribe' from='my.comp
我希望检测到这一点,例如,当用户脱机时,我可以发送一封电子邮件。发送带有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'/>
然后,您将返回每个用户资源的状态。没有办法知道你什么时候完成了。如果要在用户脱机时采取操作,只需选择一个超时值,然后在收到状态信息时停止计时器。由于用户处于离线状态,因此额外的延迟通常不是什么大问题
请注意,如果您接受上述用户的状态订阅,您将从该用户处获得探测;您可以忽略它们,也可以使用描述您的操作状态的状态节进行响应。XMPP组件是否可以代表用户发送状态节(例如,已订阅)?这取决于服务器。您必须能够通过发送用户服务器上的业务逻辑路由订阅,这是正常组件协议不允许的。我假设用户和组件连接到同一服务器。