一直对实时聊天这块内容迷糊。XMPP 好复杂的说。 对于一个超低配服务端,我想用 Go 压榨性能,利用好“协程”、队列的形式降低一点实时性(即收发消息有少许延迟)保证资源的低消耗,配合 Python 跑一些业务逻辑,调用一下 Push(极光)的推送保证离线消息的接收。 但是,还是搞不清楚应该如何去做,也不明白其中涉及哪些知识点。 另外,如何设计存储聊天信息的 Redis 数据库存储格式呢? 诸位,不吝赐教。
走同样的路,发现不同的人生
之前我給上家網路公司負責Android客戶端聊天底層的實現,之前參與過聊天協議的設計,圍觀了下伺服器的架構,上線以來沒有用戶報過丟消息,dau大概大幾十萬(具體數字忘了)
聊天這塊確實比較難做,關鍵在於不知道你想要什麼樣的聊天系統。例如對系統可靠性的要求有多高,就我所知,xmpp是不保證可靠性的。所以你碰到的第一個問題就是協議,不同協議的特徵和特點都不一樣。 相比來說服務端的效能真的不是特別重要,畢竟能把協議正確實現了就很費勁了,而且還要給後面的開發留餘地,方便拓展(這塊兒還是屬於協議的事情)。 至於客戶端的實現,也不輕鬆,資料庫,長連接,ui展示。一處弄不好就有一堆用戶抱怨費電費流量,UI卡什麼的都是小事。 還有,做聊天的,如果讓用戶丟幾則訊息,用戶真的就不想再用了,訊息可靠性真的很重要。 客戶端的網路條件還沒說呢,wap網路的相容性是硬傷,socket下的協定完全用不了的。 。 。 微信確實很牛逼。 。 。
推薦pomelo
同推薦Pomelo,lz我也有相同的想法,想閒了實現一下試試看。 樓上幾位說的不錯,我再來貼一個教學:Tutorial----分散式聊天伺服器 =======新增======= 嗯其實我做過XMPP,很複雜,很繁重,尤其是對於行動端的聊天室而言,流量是個問題。另外,其實用Erlang來做訊息也不錯,據說米聊後端核心就是這個做的。
Pomelo
參考 firebasehttps://www.firebase.com/
https://github.com/xiaowudesign/nowboard 這有一個,是透過微博登入,實現線上資訊交流的。只是給樓主一個思路。
Web可以用socket.io(話說是node.js,go不會的說),具體有教程的 用socket.io和express搭建聊天室
基於xmpp的, 服務端有開源的openfire , tigase 等。
web 端可以使用jsjac, strophe 等。
我們剛剛用socket.io實作了一個,快取使用的是redis
寫過類似的, http://itorr.sinaapp.com/comet/ 只要能實現收發訊息,及時返回新訊息就行,於是配合php+長連線就可以做到了。 //待附源碼
很多應用都用xmpp,看起來
之前我給上家網路公司負責Android客戶端聊天底層的實現,之前參與過聊天協議的設計,圍觀了下伺服器的架構,上線以來沒有用戶報過丟消息,dau大概大幾十萬(具體數字忘了)
聊天這塊確實比較難做,關鍵在於不知道你想要什麼樣的聊天系統。例如對系統可靠性的要求有多高,就我所知,xmpp是不保證可靠性的。所以你碰到的第一個問題就是協議,不同協議的特徵和特點都不一樣。
相比來說服務端的效能真的不是特別重要,畢竟能把協議正確實現了就很費勁了,而且還要給後面的開發留餘地,方便拓展(這塊兒還是屬於協議的事情)。
至於客戶端的實現,也不輕鬆,資料庫,長連接,ui展示。一處弄不好就有一堆用戶抱怨費電費流量,UI卡什麼的都是小事。
還有,做聊天的,如果讓用戶丟幾則訊息,用戶真的就不想再用了,訊息可靠性真的很重要。
客戶端的網路條件還沒說呢,wap網路的相容性是硬傷,socket下的協定完全用不了的。 。 。
微信確實很牛逼。 。 。
推薦pomelo
同推薦
Pomelo
,lz我也有相同的想法,想閒了實現一下試試看。樓上幾位說的不錯,我再來貼一個教學:Tutorial----分散式聊天伺服器
=======新增=======
嗯其實我做過XMPP,很複雜,很繁重,尤其是對於行動端的聊天室而言,流量是個問題。另外,其實用Erlang來做訊息也不錯,據說米聊後端核心就是這個做的。
參考 firebase
https://www.firebase.com/
https://github.com/xiaowudesign/nowboard 這有一個,是透過微博登入,實現線上資訊交流的。只是給樓主一個思路。
Web可以用socket.io(話說是node.js,go不會的說),具體有教程的 用socket.io和express搭建聊天室
基於xmpp的, 服務端有開源的openfire , tigase 等。
web 端可以使用jsjac, strophe 等。
我們剛剛用socket.io實作了一個,快取使用的是redis
寫過類似的, http://itorr.sinaapp.com/comet/ 只要能實現收發訊息,及時返回新訊息就行,於是配合php+長連線就可以做到了。
//待附源碼
很多應用都用xmpp,看起來