最近項(xiàng)目中需要集成IM功能,市面上有很多的第三方提供im服務(wù)创淡,比如環(huán)信痴晦、融云等,但都有使用限制的地方琳彩,如果不使用第三方可以自己去實(shí)現(xiàn)一套IM系統(tǒng)誊酌,不過一個IM系統(tǒng)涉及到的東西比較多,開發(fā)難度較高露乏。另一種選擇是使用xmpp碧浊,xmpp的優(yōu)點(diǎn)是有很多的開源實(shí)現(xiàn),比如服務(wù)端的ejabberd瘟仿、Openfire箱锐,iOS以及安卓端都很優(yōu)秀的開源庫可以使用,而且傳輸安全以及擴(kuò)展性強(qiáng)等(環(huán)信也是基于xmpp)劳较;同時也有一些缺點(diǎn)驹止,比如不能傳輸二進(jìn)制數(shù)據(jù)以及費(fèi)流量等,有些地方需要去改進(jìn)观蜗。
下面記錄如何使用XMPP來簡單實(shí)現(xiàn)IM功能臊恋,在這之前需要先搭建本地服務(wù)器用于測試。
ejabberd服務(wù)器搭建
為了實(shí)現(xiàn)IM聊天嫂便,需要先搭建一個XMPP服務(wù)器捞镰,這里我們采用ejabberd來作為服務(wù)器,ejabbered采用Erlang語言編寫毙替,由于語言的特性天生適合高并發(fā)的情景岸售。
- 安裝Erlang
在安裝ejabbered之前需要先安裝Erlang,在控制臺輸入命令
brew install erlang
等待安裝完成即可厂画。
- 安裝ejabbered
ejabbered服務(wù)器的安裝非常簡單凸丸,下載ejabberd安裝包直接安裝即可。
ejabbered安裝包.png
安裝完之后可以在Applications目錄先找到:
目錄結(jié)構(gòu).png
由于我們的服務(wù)器只是測試用的袱院,比較重要的是bin目錄下的start和stop命令屎慢,這兩個分別用于開啟和關(guān)閉xmpp服務(wù)瞭稼,設(shè)置這兩個命令為可執(zhí)行:
chmod 755 stop
chmod 755 start
現(xiàn)在輸入命令 ./start可以看到如下的頁面
- 添加用戶
現(xiàn)在我們的服務(wù)器只有administrators,我們需要增加幾個用戶腻惠,也方便后面測試环肘,可以輸入http://localhost:5280/admin/ 到ejabberd的后臺管理頁面:
點(diǎn)擊虛擬主機(jī),選擇用戶菜單可以看到添加用戶的頁面如下集灌,我們添加了user1@lujiangbin.local和user2@lujiangbin.local兩個用戶:
- 測試服務(wù)器
現(xiàn)在可以來測試服務(wù)器是否能正常運(yùn)行了悔雹。要測試的話我們需要兩個支持xmpp協(xié)議的客戶端,可以使用Mac OSX自帶的iMessage(登陸user1)和Adium(登陸user2) 欣喧,其中支持xmpp協(xié)議的客戶端有:
http://xmpp.org/xmpp-software/clients/
打開iMessage添加用戶
iMessage可能會提示服務(wù)器的證書需要驗(yàn)證腌零,點(diǎn)擊繼續(xù)即可:
可以看到user1已經(jīng)登陸成功了。
接著打開Adium添加user2@lujiangbin.local用戶唆阿,添加過程跟iMessage類似:
設(shè)置連接服務(wù)器為localhost:
由于現(xiàn)在user1和user2還不是好友關(guān)系益涧,因此沒法進(jìn)行聊天,點(diǎn)擊iMessage添加好友user2@lujiangbin.local:
在Adium會收到驗(yàn)證請求驯鳖,點(diǎn)擊接受雙方互加好友闲询,接著就可以進(jìn)行im聊天了:
這樣我們確認(rèn)本地的xmpp服務(wù)器是可用的,接下來就可以著手客戶端的開發(fā)了浅辙,可以查看IM開發(fā)(2)-iOS客戶端