2010-08-17 34 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