2014-06-10 74 views
0

我開發了一個使用Prosody的聊天應用程序,當有人收到消息並且不在線時,我需要發送推送通知。收聽Prosody離線消息目錄

這個聊天應用程序與我用Ruby on Rails編寫的WebApp一起工作。

我搜索了很多,並沒有發現從Prosody發送推送通知的任何東西(我發現eJabberd,但我有另一個eJabberd問題)。所以我決定尋找RoR的gem來監控一個目錄,我可以監控Prosody的離線消息目錄,並在消息無法傳遞給用戶時收到回覆,然後向他發送推送通知。

我發現這個寶石聽到守衛(https://github.com/guard/listen)完全符合我的需求,但我不知道我應該在哪裏啓動監聽器,以及何時應該停止它,因爲我需要它來運行我的WebApp在線。

+0

推送通知是否需要來自您的Rails應用程序?它可以從一個單獨的過程發送嗎? – Matt

+0

@mtm它可以從另一個進程 – jonathanrz

回答

1

您正在嘗試做太多過於複雜的東西,因爲你認爲韻律是一個「黑箱」。事實上,你需要:

  • 韻律模塊,「掛鉤」離線消息,並將其發送到你的web應用程序 - 在這裏看到例如:https://github.com/JorgenPhi/ProsodyPush

  • 推送通知模塊,爲您喜歡的Web框架 - 我想你可以找到大量的紅寶石寶石。

+0

感謝您的回答,但ProsodyPush尚處於測試階段。據說在生產中不使用。 – jonathanrz

+0

@jonathanrz,這個模塊的源代碼少於描述,打開它,看看編寫韻律模塊有多簡單,打開韻律文檔和其他模塊,你就會明白你的「我不會使用韻律模塊,因爲這些模塊在「測試階段」是愚蠢的 – vitalyster

+0

我已經實現了我的解決方案,我沒有時間去改變它,我需要完成這個項目,但我同意你的觀點,因爲我接受了你的答案文檔。 – jonathanrz

0

經過大量的研究,我發現最好的方法是編寫一個簡單的ruby腳本並使用守護進程守護它(https://github.com/ghazel/daemons)。

要在我的rails應用程序中處理推送通知,我將使用listen中的forward_to選項來調用我的rails應用程序的操作。

感謝@mtm解釋如何守護進程的腳本投導軌:http://railscasts.com/episodes/129-custom-daemon

+1

發送到您想要建議的內容。有一個[rails插件](https://github.com/dougal/daemon_generator/tree/master),使得管理守護進程更簡單,這在舊的[rails cast]中詳細介紹(http://railscasts.com/episodes/ 129定製守護進程)。 – Matt

+0

謝謝你的演職員表,我會更新答案。 – jonathanrz