2010-08-17 67 views

回答

4

无论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]'/> 

然后您将返回每个用户资源的存在。没有办法告诉你什么时候完成。如果你想在用户离线时采取行动,你只需要选择一个超时值,然后如果你收到一个存在就停止计时器。由于用户无论如何都离线,所以额外的延迟通常不是一个大问题。

请注意,如果您接受上述用户的状态订阅,则会从该用户那里获取探针;您可以忽略它们,也可以使用描述您的运营状态的存在节作为响应。

+0

感谢您的更新:) – Alfred 2010-09-18 14:22:29

+0

XMPP组件是否可以代表用户发送节(例如订阅)? – Jus12 2011-06-02 02:55:50

+0

这取决于服务器。您必须能够通过发送用户的服务器上的业务逻辑来路由订阅,这是正常组件协议不允许的。 – 2011-06-02 05:40:39