Skip to content

tmc4qn/Ejabberd-Learning

Repository files navigation

Ejabberd學習筆記

本篇是簡單介紹Ejabberd Server跟如何修改Source Code的思路歷程,如果有任何觀念不對的地方也歡迎指教

前言

2017年10月來到新東家,很奇妙的碰上我從以前到現在沒有摸過的Ejabberd,也學習到一點Erlang的基礎,我相信很少人聽過Ejabberd這個IM(Instant Message)框架,但我相信大家都聽過skype、google hangout、wahtsapp以及facebook的messenger,他們的底層都是從Ejabberd/Erlang來的,究竟Ejabberd是什麼?怎麼安裝?以及怎麼修改它的原始碼,我會一個一個慢慢的介紹,在介紹之前先來講ejabberd的小故事。

Ejabberd目前是可擴展/延伸的Jabber/XMPP伺服器,而E代表Erlang的意思;它支持多個伺服器,並且具有容錯處理,單台伺服器失效不影響整個cluster運作,而把ejabberd發揮得淋漓盡致的人我想whatsapp可以算是箇中翹楚,畢竟當初facebook也是花了190億美元收購whatsapp。

Features

  • Ejabberd Server簡介/設定檔
  • Ejabberd Client Tools介紹
  • Erlang講解
  • Ejabberd Hook
  • 如何修改Ejabberd Server的Source Code

目的

由於Ejabberd在網路上的教學資源相較於其他語言(框架)並不多,入門有一定程度的門檻,有鑑於此想撰寫這篇文章來介紹修改Ejabberd的一些思路,廢話不多說就直接開始吧。Ejabberd除了可以當作IM server外,也可以把它利用在IOT傳訊息的使用上,只要是訊息溝通的用途都可以利用Ejabberd幫你完成。

Ejabberd服務例子,以whatsapp服務端架構為例

  • 幾乎全部使用Erlang
  • ejabberd (做了大量改造,使用自己的協議替代XMPP)
  • database是Mnesia
  • 非常重視性能監控

據說Facebook該開始也想要使用Erlang,但是由於優秀的Erlang工程師太難找而放棄了(有待考證)。

安裝

git clone https://github.com/processone/ejabberd.git

接著cd到ejabberd專案,然後

./autogen.sh

之後會產生configure,再下

./configure --enable-mysql

這時候腳本會幫你檢查很多東西,會出現以下的訊息 Imgur Image 這時候就是依照系統指示安裝缺少的套件像是

  • erlang
  • libssl-dev
  • libexpat1-dev
  • libyaml-dev

apt-get install 慢慢安裝就可以了

安裝好之後就下make,之後就是make install就沒問題了,看到以下畫面就是完成Ejabberd的安裝了!! Imgur Image

下一篇:如何執行Ejabberd並利用pidgin進行連線

ref

1. Facebook 收購 Whatsapp:晚一步,就得付出巨大代價
2. WhatsApp 的一点分析
3. Ejabberd XMPP client iOS - Logic behind WhatsApp
4. 如何学习XMPP协议
5. Ejabberd github
6. Process One(一些Ejabberd的doc都在這邊)
7. How to install Ejabberd 18.01 XMPP Server with Mysql on Ubuntu 16.04

About

整理學習ejabberd的心得

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages