即時(shí)通信(1):XMPP簡(jiǎn)介及環(huán)境搭建

什么是即時(shí)通信?

  • 即時(shí)通訊(Instant Messaging)是目前Internet上最為流行的通訊方式,各種各樣的即時(shí)通訊軟件也層出不窮,服務(wù)提供商也提供了越來(lái)越豐富的通訊服務(wù)功能。

即時(shí)通訊的實(shí)現(xiàn)方式?

  • 即時(shí)通訊有多種實(shí)現(xiàn)方式,例如:XMPP、環(huán)信、融云等。本文則對(duì)XMPP的使用進(jìn)行介紹。

什么是XMPP?

  • XMPP(XML,Messages,Presence,Protocol)是可擴(kuò)展通訊和表示協(xié)議,基于XML(可擴(kuò)展標(biāo)記語(yǔ)言),可用于即時(shí)通信(IM)。
  • 目前有四種主流IM(即時(shí)通訊)協(xié)議:XMPP(可擴(kuò)展通訊和表示協(xié)議)、IMPP(即時(shí)信息和空間協(xié)議)、PPIM(空間和即時(shí)信息協(xié)議)、SIMPLE(針對(duì)即時(shí)通訊和空間平衡擴(kuò)充的進(jìn)程開(kāi)始協(xié)議)。在這四種協(xié)議中,最靈活的就是XMPP,它是基于XML協(xié)議的,繼承了在XML環(huán)境中靈活的發(fā)展性,因此,基于XMPP的應(yīng)用程序具有超強(qiáng)的可擴(kuò)展性。

XMPP優(yōu)點(diǎn):

  • 開(kāi)放:XMPP協(xié)議是由JSF開(kāi)源社區(qū)組織開(kāi)發(fā)的,不屬于任何的機(jī)構(gòu)和個(gè)人,所以XMPP是自由、開(kāi)放、公開(kāi)的,而且易于了解。在客戶端、服務(wù)器、組件、源碼庫(kù)等方面,都有了多種實(shí)現(xiàn)。
  • 標(biāo)準(zhǔn):互聯(lián)網(wǎng)工程工作組將XMPP于2002年正式列為認(rèn)可的實(shí)時(shí)通訊及Presence技術(shù)。
  • 分布式的網(wǎng)絡(luò)架構(gòu):XMPP協(xié)議雖然是Client/Server的通訊模式,但是XMPP協(xié)議本身并沒(méi)有這樣的限制。而分布式網(wǎng)絡(luò)是由分布在不同地點(diǎn)且具有多個(gè)終端的節(jié)點(diǎn)機(jī)互連而成,網(wǎng)絡(luò)中的任意一點(diǎn)均至少與兩條線路相連,當(dāng)任意一條線路發(fā)生故障,通信還可經(jīng)其他鏈路完成,具有較高的可靠性,同時(shí)網(wǎng)絡(luò)易于擴(kuò)充。XMPP網(wǎng)絡(luò)架構(gòu)和電子郵件十分相似,其核心協(xié)議通信方式是先創(chuàng)建一個(gè)Stream,然后以TCP傳遞XML數(shù)據(jù)流,沒(méi)有中央服務(wù)器,任何人都可以運(yùn)行自己的XMPP服務(wù)器,使個(gè)人或組織能夠掌握他們的實(shí)時(shí)通訊體驗(yàn)。
  • 良好的擴(kuò)展性:基于XML建立起來(lái)的應(yīng)用具有良好的語(yǔ)義完整性和擴(kuò)展性。
  • 應(yīng)用廣泛:XMPP除了可用在即時(shí)通信的應(yīng)用程序,還能用在網(wǎng)絡(luò)管理、內(nèi)容供稿、協(xié)同工具、檔案共享、游戲、遠(yuǎn)端系統(tǒng)監(jiān)控等。
  • 安全性:XMPP在Client-to-Server通信和Server-to-Client通信中都使用TLS(Transport Layer Security)協(xié)議作為通信通道的加密方法,保證通信的安全。

XMPP實(shí)現(xiàn)即時(shí)通訊

實(shí)現(xiàn)即時(shí)通訊至少需要一個(gè)服務(wù)器端、兩個(gè)客戶端。下面我們準(zhǔn)備需要的環(huán)境:XMPP服務(wù)器、XMPP客戶端(輔助調(diào)試)

XMPP環(huán)境搭建

搭建XMPP環(huán)境需要幾個(gè)輔助工具:

  • XAMPP
    XAMPP(Apache+MySQL+PHP+PERL)是一個(gè)功能強(qiáng)大的XAMPP軟件站集成軟件包,是一個(gè)易于安裝且包含MySQL、PHP和Perl的Apache發(fā)行版,非常容易安裝和使用,只需下載、解壓縮、啟動(dòng)即可。
XAMPP1
XAMPP2
XAMPP3
XAMPP4
XAMPP5
XAMPP6
  • Openfire
    Openfire采用Java開(kāi)發(fā),開(kāi)源的實(shí)時(shí)協(xié)作(RTC)服務(wù)器,基于XMPP(Jabber)協(xié)議。其安裝和使用都非常簡(jiǎn)單,利用Web進(jìn)行管理。單臺(tái)服務(wù)器可支持上萬(wàn)并發(fā)用戶。
    因?yàn)镺penfire服務(wù)是基于JAVA語(yǔ)言寫的,所以電腦必須要有java運(yùn)行環(huán)境。安裝JDK成功后進(jìn)行Openfire的安裝。
Openfire1
Openfire2
Openfire3
Openfire4
Openfire5
Openfire6
Openfire7

此時(shí)需要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)以供使用:


Openfire8
Openfire9

創(chuàng)建數(shù)據(jù)庫(kù)結(jié)束,需要導(dǎo)入表,此時(shí)要去openfire文件夾中獲取需要的文件,位置如下:


Openfire10
Openfire11
Openfire12
Openfire13
Openfire14
Openfire15
Openfire16
Openfire17
Openfire18
Openfire19
Openfire20
Openfire21
XMPP客戶端環(huán)境搭建

搭建XMPP客戶端環(huán)境使用spark,輔助調(diào)試。XMPP系統(tǒng)的一個(gè)設(shè)計(jì)標(biāo)準(zhǔn)是必須支持簡(jiǎn)單的客戶端。事實(shí)上,XMPP系統(tǒng)架構(gòu)對(duì)客戶端只有很少的幾個(gè)限制。一個(gè)XMPP客戶端必須支持的功能有:

  • 通過(guò)TCP套接字與XMPP服務(wù)器進(jìn)行通信
  • 解析組織好的XML信息包
  • 理解消息數(shù)據(jù)類型
spark1
spark2

環(huán)境配置結(jié)束。

工程中添加X(jué)MPP
  • 創(chuàng)建新工程
  • 導(dǎo)入XMPP框架
  • 引入XMPP需要的依賴庫(kù)libxml2和libresolv
  • 設(shè)置路徑/usr/include/libxml2
導(dǎo)入XMPP
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容