2015-06-09 76 views
1

我是一位PHP開發人員,缺乏其他服務器端語言的經驗。我應該使用哪些技術來創建實時一對一聊天?

我希望你給我提供線索,建議,關鍵字或任何可以幫助我更好地完善我的研究。

我想要做的基本上是創建一個一對一的移動應用程序聊天即會規模

將有3個用戶的信道:用戶A,用戶B和「計算機」推某些消息根據一些信道信息等已經被髮送的消息中的最後時間等 用戶A應該知道,如果用戶B 在線,撰寫等。 每個對話應該是存儲在數據庫,並將通過一些算法進行分析。這些算法還會分析用戶Facebook開放圖表上的內容。

應用程序應該能夠在IOS和Android上發送通知。

網絡管理員應該允許管理員設置一些東西來定義「計算機」將發送什麼樣的消息。

我讀過很多關於websocket,xmpp,node.js,socket.io等的帖子,但是我沒有足夠的知識來決定應該在什麼樣的架構下使所有的東西一起工作。或者,也許有一些雲基礎解決方案,將適合我的需要...

感謝

回答

3

正如你說有實現那種結構的方法很多,但我打算寫的node.js + socket.io部分;

1)它是可擴展的。你可以使用集羣,nginx,haproxy。 (see here)當然,您必須使用redis或mongo或socket.io的某種存儲,以便不同的服務器和進程可以相互通信。 (see here

2) socket.io有房間。這意味着客戶和任何計算機機器人都可以加入這個房間,以彼此分享活動。因此,在用戶A的情況下,用戶B和計算機機器人應該加入同一個房間,並且發送到該房間的事件將被廣播給每個房間成員。 (事件可以在線,打字,新的消息,一切會發生變化)(see here

3) node.js中可以發送推送通知既爲iOSAndroid

4)您可以在新消息事件中將每條消息寫入您選擇的數據庫。

5)您可以爲您的管理頁面創建一個帶有Express framework的REST API。您可以使用passport進行身份驗證和授權。您可以使用Jquery或React等其他前端框架來使用其餘的api。

+0

真棒回答你。 你有關於我應該使用的數據庫的建議嗎? noSql或關係數據庫? 我也讀過rabbitMq可能會有所幫助。你可以給我你的想法嗎? –

+1

數據庫選擇符合您的要求,如果您沒有太多關係數據,則NoSQL會正常工作。我爲我的移動應用程序使用了mongodb,它工作正常。我沒有使用rabbitMq,但我知道它也是一個很好的解決方案,因爲它有很多排隊等功能。當我開始我的項目時,我並不知道這個解決方案,所以使用socket.io。目前我對此感到滿意(雖然我沒有很多用戶,但消息並不是應用程序的重要組成部分,不能保證在壓力下運行良好),但我想嘗試其他解決方案項目有一天。 – cdagli

相關問題