2
我使用http://xmppjs.prosody.im/编码xmpp组件。我想发送消息给一个jid,但只有当用户在线。什么是最快/最有效的方式来实现这一点。xmpp组件:只有在jid在线时发送消息
我想检测这个,例如我可以在用户离线时发送电子邮件。
我使用http://xmppjs.prosody.im/编码xmpp组件。我想发送消息给一个jid,但只有当用户在线。什么是最快/最有效的方式来实现这一点。xmpp组件:只有在jid在线时发送消息
我想检测这个,例如我可以在用户离线时发送电子邮件。
无论JID是否在线,都会发送类型为'headline'的消息。如果收件人处于脱机状态,标题消息不应存储以供以后传送。
这种方法比其他任何你可以做的更快更便携。
如果MUST做不同的基于用户是否在线的东西,你就需要订阅该用户的存在:
<presence type='subscribe' from='my.component' to='[email protected]'/>
用户将不得不接受你的要求:
<presence type='subscribed' to='my.component' from='[email protected]'/>
用户还可以订阅回您的组件:
<presence type='subscribe' to='my.component' from='[email protected]'/>
你可以做那些你选择的东西;最容易做的事情是只接受他们:
<presence type='subscribe' from='my.component' to='[email protected]'/>
你需要他们的存在每一次,或每您的组件启动时,它需要一个探头发送给该用户:
<presence type='probe' from='my.component' to='[email protected]'/>
然后您将返回每个用户资源的存在。没有办法告诉你什么时候完成。如果你想在用户离线时采取行动,你只需要选择一个超时值,然后如果你收到一个存在就停止计时器。由于用户无论如何都离线,所以额外的延迟通常不是一个大问题。
请注意,如果您接受上述用户的状态订阅,则会从该用户那里获取探针;您可以忽略它们,也可以使用描述您的运营状态的存在节作为响应。
感谢您的更新:) – Alfred 2010-09-18 14:22:29
XMPP组件是否可以代表用户发送节(例如订阅)? – Jus12 2011-06-02 02:55:50
这取决于服务器。您必须能够通过发送用户的服务器上的业务逻辑来路由订阅,这是正常组件协议不允许的。 – 2011-06-02 05:40:39