什么是即時通信名秀?
- 即時通訊(Instant Messaging)是目前Internet上最為流行的通訊方式,各種各樣的即時通訊軟件也層出不窮嫡丙,服務(wù)提供商也提供了越來越豐富的通訊服務(wù)功能棺榔。
即時通訊的實現(xiàn)方式授艰?
- 即時通訊有多種實現(xiàn)方式,例如:XMPP赌渣、環(huán)信魏铅、融云等。本文則對XMPP的使用進行介紹坚芜。
什么是XMPP览芳?
- XMPP(XML,Messages鸿竖,Presence沧竟,Protocol)是可擴展通訊和表示協(xié)議,基于XML(可擴展標(biāo)記語言)缚忧,可用于即時通信(IM)悟泵。
- 目前有四種主流IM(即時通訊)協(xié)議:XMPP(可擴展通訊和表示協(xié)議)、IMPP(即時信息和空間協(xié)議)闪水、PPIM(空間和即時信息協(xié)議)糕非、SIMPLE(針對即時通訊和空間平衡擴充的進程開始協(xié)議)。在這四種協(xié)議中球榆,最靈活的就是XMPP朽肥,它是基于XML協(xié)議的,繼承了在XML環(huán)境中靈活的發(fā)展性芜果,因此鞠呈,基于XMPP的應(yīng)用程序具有超強的可擴展性。
XMPP優(yōu)點:
- 開放:XMPP協(xié)議是由JSF開源社區(qū)組織開發(fā)的右钾,不屬于任何的機構(gòu)和個人蚁吝,所以XMPP是自由旱爆、開放、公開的窘茁,而且易于了解怀伦。在客戶端、服務(wù)器山林、組件房待、源碼庫等方面,都有了多種實現(xiàn)驼抹。
- 標(biāo)準(zhǔn):互聯(lián)網(wǎng)工程工作組將XMPP于2002年正式列為認(rèn)可的實時通訊及Presence技術(shù)桑孩。
- 分布式的網(wǎng)絡(luò)架構(gòu):XMPP協(xié)議雖然是Client/Server的通訊模式,但是XMPP協(xié)議本身并沒有這樣的限制框冀。而分布式網(wǎng)絡(luò)是由分布在不同地點且具有多個終端的節(jié)點機互連而成流椒,網(wǎng)絡(luò)中的任意一點均至少與兩條線路相連,當(dāng)任意一條線路發(fā)生故障明也,通信還可經(jīng)其他鏈路完成宣虾,具有較高的可靠性,同時網(wǎng)絡(luò)易于擴充温数。XMPP網(wǎng)絡(luò)架構(gòu)和電子郵件十分相似绣硝,其核心協(xié)議通信方式是先創(chuàng)建一個Stream,然后以TCP傳遞XML數(shù)據(jù)流撑刺,沒有中央服務(wù)器鹉胖,任何人都可以運行自己的XMPP服務(wù)器,使個人或組織能夠掌握他們的實時通訊體驗猜煮。
- 良好的擴展性:基于XML建立起來的應(yīng)用具有良好的語義完整性和擴展性次员。
- 應(yīng)用廣泛:XMPP除了可用在即時通信的應(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實現(xiàn)即時通訊
實現(xiàn)即時通訊至少需要一個服務(wù)器端、兩個客戶端囱桨。下面我們準(zhǔn)備需要的環(huán)境:XMPP服務(wù)器仓犬、XMPP客戶端(輔助調(diào)試)
XMPP環(huán)境搭建
搭建XMPP環(huán)境需要幾個輔助工具:
- XAMPP
XAMPP(Apache+MySQL+PHP+PERL)是一個功能強大的XAMPP軟件站集成軟件包,是一個易于安裝且包含MySQL舍肠、PHP和Perl的Apache發(fā)行版搀继,非常容易安裝和使用窘面,只需下載、解壓縮叽躯、啟動即可财边。
XAMPP1
XAMPP2
XAMPP3
XAMPP4
XAMPP5
XAMPP6
- Openfire
Openfire采用Java開發(fā),開源的實時協(xié)作(RTC)服務(wù)器点骑,基于XMPP(Jabber)協(xié)議酣难。其安裝和使用都非常簡單,利用Web進行管理黑滴。單臺服務(wù)器可支持上萬并發(fā)用戶憨募。
因為Openfire服務(wù)是基于JAVA語言寫的,所以電腦必須要有java運行環(huán)境跷跪。安裝JDK成功后進行Openfire的安裝馋嗜。
Openfire1
Openfire2
Openfire3
Openfire4
Openfire5
Openfire6
Openfire7
此時需要創(chuàng)建數(shù)據(jù)庫以供使用:
Openfire8
Openfire9
創(chuàng)建數(shù)據(jù)庫結(jié)束,需要導(dǎo)入表吵瞻,此時要去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)的一個設(shè)計標(biāo)準(zhǔn)是必須支持簡單的客戶端。事實上济舆,XMPP系統(tǒng)架構(gòu)對客戶端只有很少的幾個限制卿泽。一個XMPP客戶端必須支持的功能有:
- 通過TCP套接字與XMPP服務(wù)器進行通信
- 解析組織好的XML信息包
- 理解消息數(shù)據(jù)類型
spark1
spark2
環(huán)境配置結(jié)束。
工程中添加XMPP
- 創(chuàng)建新工程
- 導(dǎo)入XMPP框架
- 引入XMPP需要的依賴庫libxml2和libresolv
- 設(shè)置路徑/usr/include/libxml2
導(dǎo)入XMPP