Coder Social home page Coder Social logo

ejabberd-learning's Introduction

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

ejabberd-learning's People

Contributors

tmc4qn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

subaruuuu

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.