回覆列表
-
1 # 科技範博士
-
2 # 平章芯事
竟然還有人問這個問題?!
im開發不難,難的是推廣。如whatsapp,用freebsd+erlang就搞定了幾千萬使用者,資料庫就是erlang自帶的那個。oschina上有大把開源的練手的im,伺服器端從golang、java、php、…只有你想不到,沒有做不到的。
現在im的競爭已經進入了粘性時代,你就是寫的再好,沒有熟人朋友在上面你會用多久?!人越少,交流機會越少,人就更少,惡性迴圈。所以陌陌才會打陌生人社交的牌,沒辦法,熟人交流向來是騰訊的天下,msn曾經有機會,當然也只能是曾經了。
總之,im開發不難,難在沒人用。死掉的im已經不計其數,如uc等等,不要再前赴後繼做烈士了,這是我對你的最大勸告,當然你若有錢任性,只當我沒說。
有個前輩朋友在企鵝剛發達不久後加入的,跟他交流學習過很多,對IM也就是即時通訊系統還是有些瞭解的。
開發IM系統一般分為兩類:
利用別人的雲推送平臺這是降低開發成本和難度的好方法,因為你不用去折騰伺服器端,有一大堆專業的工程師已經幫你搞定,你就只需要交錢就好,而且這部分錢要比你自己搭建的成本少的多,甚至有些雲推送還是免費的,例如百度雲推送、信鴿等。
當然,這種方法一般只適合於搭建小型的IM系統,而且保密效能一般,因為往來的訊息都要經過別人的伺服器,喪失了控制權。如果不想受制於這一缺陷,或者對安全性要求較高,那就需要自己搭建伺服器。
自己搭建伺服器自己動手搭建伺服器,成本和難度自然會提高。一般會涉及以下幾個方面:
基礎通訊協議
即時通訊對連線的穩定性要求較高。伺服器端與客戶端或者客戶端與客戶端之間不建議用Socket相連,而應該用一個客戶端—>伺服器端—>客戶端的長連線,建議使用更為輕量級的MQTT,而非PC時代笨重冗餘的XMPP。
語言
JAVA是一個很好的選擇。
資料庫
MySQL。
伺服器端實現
伺服器端的設計要考慮到通訊容量,也就是說你想為多少使用者提供同時無延遲的線上收發訊息,就要相應的提供什麼級別的伺服器,否則訊息漏發、延遲嚴重,會嚴重影響使用者體驗。
客戶端實現
客戶端相對來講比較簡單,紮紮實實完成就好。
碼字不易,感謝鼓勵。