安裝完Ejabberd之後,再來就是執行Ejabberd,執行Ejabberd非常簡單只要下
ejabberdctl start
然後接著下
ejabberdctl status
如果看到以下訊息表示成功了,ejabberdctl有很多command可以使用,詳細我放在ref裡面了,有興趣可以自己看一下。
The node ejabberd@localhost is started with status: started
ejabberd 18.06.82 is running in that node
除了看command line的訊息外,檢查Ejabberd log也非常重要,可以幫助排除很多障礙。
在啟動時,Ejabberd log會顯示一個警告如下,意思是不建議mod_mam使用一開始設定的Mnesia。
ps:mod_mam是儲存用戶傳訊的module
Mnesia backend for mod_mam is not recommended: it's limited to 2GB and often gets corrupted
when reaching this limit. SQL backend is recommended. Namely, for small servers SQLite is a
preferred choice because it's very easy to configure.
回到正題,雖然Ejabberd啟動了,但預設情況下它的database是Mnesia而不是我們熟知的mysql,如何把Ejabberd掛載到我們的mysql database就需要去修改它的yml檔,掛載之前先取得sql的schema,如果連結不見再google一下應該就可以找到了,或是在我專案也可以找到。
wget https://raw.githubusercontent.com/processone/ejabberd/master/sql/mysql.sql
當你把schema import到你的database之後,接下來是修改Ejabberd的yml
把mysql設定成預設:
default_db: sql
一些關於database的設定檔:
sql_type: mysql
sql_server: "IP address or RDS endpoint or localhost"
sql_database: "ejabberd"
sql_username: "ejabberd"
sql_password: "password"
## If you want to specify the port:
sql_port: 3306
註冊用戶,檢查一下如果users table裡面有沒有你剛註冊的帳號,如果有表示成功了!!
ejabberdctl register admin localhost password_here
按照下圖的輸入帳號密碼就可以了,有一些加密憑證的設定由於我們是開發階段所以像是pidgin connection security,以及Ejabberd yml裡面的starttls_required: false,都可以暫時根據你的系統先行用比較寬鬆的規則。 有了Ejabberd,接下來就是用pidgin來連接我們的server吧!!
Pidgin(前稱Gaim)是一個跨平台的即時通訊用戶端,使用GNU通用公共許可證發佈。這款軟體支援多個現時常用的即時通訊協定,讓使用者可以用同一個軟體登入不同的即時通訊服務。
Pidgin wiki
apt-get install pidgin
執行pidgin後,輸入你的帳號資料就可以了!!
如果有連線成功,表示你連接上你的Ejabberd server了,Good!!
除了用pidgin外,也可以用別人開發好的xmpp client 套件連上Ejabberd Server,這邊的範例用我比較熟悉的Node js來做範例,並透過websocket連上Ejabberd。
首先先打開瀏覽器輸入以下網址,檢查你的頁面是不是有類似這樣的字句 "An implementation of WebSocket protocolThis web page is only informative. To use WebSocket connection you need a Jabber/XMPP client that supports it."
http://127.0.0.1:5280/ws
根據你的yml不同,會有不一樣的設定,檢查一下ejabberd_http中,request_handlers裡面的ws是隸屬於哪個port
檢查完之後,就用下以下的指令安裝套件
npm install stanza.io
新增一個index.js然後把以下code根據你的系統資料輸入
var XMPP = require('stanza.io');
var client = XMPP.createClient({
jid: 'admin@localhost',
password: '1234',
transport: 'websocket',
wsURL: 'ws://127.0.0.1:5280/ws'
});
client.on('session:started', function () {
client.getRoster();
client.sendPresence();
console.log("ok");
});
client.on('raw:incoming', function(xml){
//for debug, you can comment on this function
console.log(xml);
});
如果你看到ok,表示你的Node js xmpp client也成功連線server了!!接下來你就可以利用像是vue js等前端框架然後require stanza.io
就可以在你的網站建立簡易的聊天室,是不是很簡單?真的很簡單對吧?
下一篇:Ejabberd auth external
1. Ejabberdctl
2. pidgin im
3. Ejabberd mysql schema
4. Ubuntu – 安裝 PHP7 + Apache + Mysql/MariaDB + phpMyadmin
5. Stanza io
6. Strophe.js