1. 程式人生 > >IM開發(1)-ejabberd伺服器搭建

IM開發(1)-ejabberd伺服器搭建

最近專案中需要整合IM功能,市面上有很多的第三方提供im服務,比如環信、融雲等,但都有使用限制的地方,如果不使用第三方可以自己去實現一套IM系統,不過一個IM系統涉及到的東西比較多,開發難度較高。另一種選擇是使用xmpp,xmpp的優點是有很多的開源實現,比如服務端的ejabberd、Openfire,iOS以及安卓端都很優秀的開源庫可以使用,而且傳輸安全以及擴充套件性強等(環信也是基於xmpp);同時也有一些缺點,比如不能傳輸二進位制資料以及費流量等,有些地方需要去改進。
下面記錄如何使用XMPP來簡單實現IM功能,在這之前需要先搭建本地伺服器用於測試。

ejabberd伺服器搭建

為了實現IM聊天,需要先搭建一個XMPP伺服器,這裡我們採用ejabberd來作為伺服器,ejabbered採用Erlang語言編寫,由於語言的特性天生適合高併發的情景。

  • 安裝Erlang
    在安裝ejabbered之前需要先安裝Erlang,在控制檯輸入命令
    brew install erlang
    等待安裝完成即可。
  • 安裝ejabbered
    ejabbered伺服器的安裝非常簡單,下載ejabberd安裝包直接安裝即可。

    ejabbered安裝包.png
    安裝完之後可以在Applications目錄先找到:

    目錄結構.png
    由於我們的伺服器只是測試用的,比較重要的是bin目錄下的start和stop命令,這兩個分別用於開啟和關閉xmpp服務,設定這兩個命令為可執行:
    chmod 755 stop
    chmod 755 start
    現在輸入命令 ./start可以看到如下的頁面

啟動頁面.png
  • 新增使用者
    現在我們的伺服器只有administrators,我們需要增加幾個使用者,也方便後面測試,可以輸入http://localhost:5280/admin/ 到ejabberd的後臺管理頁面:

管理頁面.png


點選虛擬主機,選擇使用者選單可以看到新增使用者的頁面如下,我們添加了[email protected][email protected]兩個使用者:


新增使用者.png
  • 測試伺服器
    現在可以來測試伺服器是否能正常運行了。要測試的話我們需要兩個支援xmpp協議的客戶端,可以使用Mac OSX自帶的iMessage(登陸user1)和Adium(登陸user2) ,其中支援xmpp協議的客戶端有:
    http://xmpp.org/xmpp-software/clients/

開啟iMessage新增使用者


新增使用者user1.png

iMessage可能會提示伺服器的證書需要驗證,點選繼續即可:


螢幕快照 2015-10-08 下午3.34.55.png


可以看到user1已經登陸成功了。


登陸成功

接著開啟Adium新增[email protected]使用者,新增過程跟iMessage類似:


新增使用者1.png


設定連線伺服器為localhost:


新增使用者2.png

由於現在user1和user2還不是好友關係,因此沒法進行聊天,點選iMessage新增好友[email protected]


新增好友


在Adium會收到驗證請求,點選接受雙方互加好友,接著就可以進行im聊天了:


好友新增.png
聊天.png