2015-03-02 43 views
0

我們正在開發一個具有聊天功能的應用程序。我們有一個ejabberd(15.02)配置爲使用mod_offline_post來使用離線消息掛鉤並將離線客戶端的所有消息轉發給我們自己的url,然後轉發給GCM。Ejabberd與流管理(XEP-198)不使用離線消息鉤

但是,由於我們正在開發一個應用程序,我們還需要啓用XEP-198(流管理)來處理連接丟失。這本身工作正常。流被創建並恢復,消息被確認。

問題是,jabber正在等待一個流恢復,並且不會將任何脫機消息轉發到脫機消息鉤子,從而轉發到我們的mod和post url。當然,它將它們存儲在其離線存儲中,並在收件人恢復其流時收到它們。

有什麼辦法可以配置jabber來調用離線消息鉤,而ejabberd_c2s:fsm_next_state:2517 Waiting for resumption of stream for...

PS:我們嫌使用在客戶端提供流管理

+0

假設您的客戶端試圖通過建立到您服務器的TCP連接來保持XMPP連接,那麼爲什麼您甚至要使用GCM,而不是等到客戶端重新建立連接? – Flow 2015-03-02 11:49:45

+0

因爲如果應用程序完全關閉,我們仍然希望客戶端用戶知道他有傳入消息。點擊GCM通知將會打開應用程序,重新建立連接併發送消息。 – Pete 2015-03-03 06:35:25

+0

即使前臺沒有應用程序的活動,您也可以使用粘性後臺服務。 – Flow 2015-03-03 07:02:21

回答

1

在我的理解ejabberd的行爲是從視XMPP規範點是正確的。它做的是正確的事情,不應該在這種情況下將消息轉發到脫機商店,因爲技術上你沒有脫機。

這是不適合放置推送處理的地方。

+0

感謝您的回答。這就是我想到的。原來,它已經按照預期工作。 Jabber在5分鐘的空閒時間後關閉流,然後將所有離線消息轉發到我們的推送URL。如果客戶在此之前重新連接,他只是直接從jabber離線存儲獲取所有消息。所以我只是太急躁。 – Pete 2015-03-03 14:05:12

+0

非常高興你得到它的工作:) – 2015-03-03 19:13:53