什么是即時通信?
- 即時通訊(Instant Messaging)是目前Internet上最為流行的通訊方式,各種各樣的即時通訊軟件也層出不窮,服務提供商也提供了越來越豐富的通訊服務功能。
即時通訊的實現方式?
- 即時通訊有多種實現方式,例如:XMPP、環信、融云等。本文則對XMPP的使用進行介紹。
什么是XMPP?
- XMPP(XML,Messages,Presence,Protocol)是可擴展通訊和表示協議,基于XML(可擴展標記語言),可用于即時通信(IM)。
- 目前有四種主流IM(即時通訊)協議:XMPP(可擴展通訊和表示協議)、IMPP(即時信息和空間協議)、PPIM(空間和即時信息協議)、SIMPLE(針對即時通訊和空間平衡擴充的進程開始協議)。在這四種協議中,最靈活的就是XMPP,它是基于XML協議的,繼承了在XML環境中靈活的發展性,因此,基于XMPP的應用程序具有超強的可擴展性。
XMPP優點:
- 開放:XMPP協議是由JSF開源社區組織開發的,不屬于任何的機構和個人,所以XMPP是自由、開放、公開的,而且易于了解。在客戶端、服務器、組件、源碼庫等方面,都有了多種實現。
- 標準:互聯網工程工作組將XMPP于2002年正式列為認可的實時通訊及Presence技術。
- 分布式的網絡架構:XMPP協議雖然是Client/Server的通訊模式,但是XMPP協議本身并沒有這樣的限制。而分布式網絡是由分布在不同地點且具有多個終端的節點機互連而成,網絡中的任意一點均至少與兩條線路相連,當任意一條線路發生故障,通信還可經其他鏈路完成,具有較高的可靠性,同時網絡易于擴充。XMPP網絡架構和電子郵件十分相似,其核心協議通信方式是先創建一個Stream,然后以TCP傳遞XML數據流,沒有中央服務器,任何人都可以運行自己的XMPP服務器,使個人或組織能夠掌握他們的實時通訊體驗。
- 良好的擴展性:基于XML建立起來的應用具有良好的語義完整性和擴展性。
- 應用廣泛:XMPP除了可用在即時通信的應用程序,還能用在網絡管理、內容供稿、協同工具、檔案共享、游戲、遠端系統監控等。
- 安全性:XMPP在Client-to-Server通信和Server-to-Client通信中都使用TLS(Transport Layer Security)協議作為通信通道的加密方法,保證通信的安全。
XMPP實現即時通訊
實現即時通訊至少需要一個服務器端、兩個客戶端。下面我們準備需要的環境:XMPP服務器、XMPP客戶端(輔助調試)
XMPP環境搭建
搭建XMPP環境需要幾個輔助工具:
- XAMPP
XAMPP(Apache+MySQL+PHP+PERL)是一個功能強大的XAMPP軟件站集成軟件包,是一個易于安裝且包含MySQL、PHP和Perl的Apache發行版,非常容易安裝和使用,只需下載、解壓縮、啟動即可。
XAMPP1
XAMPP2
XAMPP3
XAMPP4
XAMPP5
XAMPP6
- Openfire
Openfire采用Java開發,開源的實時協作(RTC)服務器,基于XMPP(Jabber)協議。其安裝和使用都非常簡單,利用Web進行管理。單臺服務器可支持上萬并發用戶。
因為Openfire服務是基于JAVA語言寫的,所以電腦必須要有java運行環境。安裝JDK成功后進行Openfire的安裝。
Openfire1
Openfire2
Openfire3
Openfire4
Openfire5
Openfire6
Openfire7
此時需要創建數據庫以供使用:
Openfire8
Openfire9
創建數據庫結束,需要導入表,此時要去openfire文件夾中獲取需要的文件,位置如下:
Openfire10
Openfire11
Openfire12
Openfire13
Openfire14
Openfire15
Openfire16
Openfire17
Openfire18
Openfire19
Openfire20
Openfire21
XMPP客戶端環境搭建
搭建XMPP客戶端環境使用spark,輔助調試。XMPP系統的一個設計標準是必須支持簡單的客戶端。事實上,XMPP系統架構對客戶端只有很少的幾個限制。一個XMPP客戶端必須支持的功能有:
- 通過TCP套接字與XMPP服務器進行通信
- 解析組織好的XML信息包
- 理解消息數據類型
spark1
spark2
環境配置結束。
工程中添加XMPP
- 創建新工程
- 導入XMPP框架
- 引入XMPP需要的依賴庫libxml2和libresolv
- 設置路徑/usr/include/libxml2
導入XMPP