Skip to content

Latest commit

 

History

History
100 lines (96 loc) · 4.82 KB

1. 執行Ejabberd與pidgin連線.md

File metadata and controls

100 lines (96 loc) · 4.82 KB

執行Ejabberd

安裝完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

Pidgin(前稱Gaim)是一個跨平台的即時通訊用戶端,使用GNU通用公共許可證發佈。這款軟體支援多個現時常用的即時通訊協定,讓使用者可以用同一個軟體登入不同的即時通訊服務。
Pidgin wiki

apt-get install pidgin

執行pidgin後,輸入你的帳號資料就可以了!! Imgur Image
如果有連線成功,表示你連接上你的Ejabberd server了,Good!!

Node js Backend of Xmpp Client

除了用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

ref

1. Ejabberdctl
2. pidgin im
3. Ejabberd mysql schema
4. Ubuntu – 安裝 PHP7 + Apache + Mysql/MariaDB + phpMyadmin
5. Stanza io
6. Strophe.js