2012-12-17 74 views
1

我剛剛發現XMPP是多麼的棒,我正在嘗試開發多人遊戲作爲XMPP組件(XEP-0114)。XMPP組件存在

但是,我無法指示組件的存在。這是真的,該組件將需要響應<存在>節本身?

確定它可以做到這一點,但不是因爲維護而關閉。另外,組件在備份時通知誰?它當然可以將所有感興趣的用戶註冊到數據庫中,但如果它停機五分鐘,那麼該列表肯定會改變。以前不感興趣的用戶現在可以使用,而感興趣的用戶將不再使用。另外,如果它崩潰(可能發生),它不能發出'不可用'存在指示。

無法將此功能卸載到服務器上嗎?

+0

什麼編程語言?什麼XMPP庫? –

+0

我使用JavaScript和node-xmpp。然而,這應該是協議,不是特定於實現......除非我誤解了某些東西。 –

+0

你是對的,除了在某些環境(如SleekXMPP)中,有一個現有的類來處理你的協議,這將是一個捷徑。 –

回答

0
  1. 當你的組件接收<presence type='probe'/>,它應該與你的組件當前存在答覆。

  2. 當你的組件收到<presence type='subscribe'/>時,它應該將from地址保存在某種存儲機制中,然後用<presence type='subscribed'/>回覆。

  3. 當你的組件上線時,它應該存在發送到每個保存在步驟訂戶2.

始終確保把既有to地址和from地址對發送的所有節你的組件。如果您習慣於編寫客戶端,您可能會在步驟3中忘記。

+0

好的,但如果組件重新聯機需要五分鐘的時間會怎樣?感興趣的用戶列表肯定會發生變化,所以步驟二中記錄的用戶將被淘汰。 –

+0

不,第二步記錄的用戶列表不會改變,除非您取消訂閱。這是對你的存在感興趣的人的名單。您不在乎是否向不在線的人發送在線狀態信息,或者如果您向已經收到該信息的人發送了第二份狀態信息(在您墜毀之前)。 –

+0

但是,如果有新用戶出現並且想在我的組件註銷時註冊,它將不會收到狀態訂閱,並且用戶不會收到回覆。然後,當組件上線時,它不會知道新用戶,用戶也不會知道該組件現在處於聯機狀態。 –