本文來自http://blog.csdn.net/cymlife 原創,引用必須注明出處!
基于QT的IM(jabber)庫和用戶端
這段時間一直在研究跨平台的IM(jabber)用戶端,經過大量的下載下傳、編譯、測試、評估,作此記錄。
使用QT作為表現層,源于QT提供了豐富的控件,以及強大的跨平台能力。jabber是一個基于XMPP協定的IM應用,解決了做什麼和怎麼做的問題。
使用QT來開發的jabber xmpp庫,主要是依據XMPP協定,和jabber伺服器進行互動,在IM系統中起到通信協定層的作用。xmpp的用戶端,必須要實作XMPP RFC3920(XMPP CORE,最新規範為RFC 6120)和RFC3921(XMPP IM,最新規範為RFC 6121),以及其他輔助的XMPP Extensions協定。
jabber xmpp庫
1. gloox
http://camaya.net/gloox/
純C++的跨平台實作,全功能,易于使用。不過自1.0之後就沒有更新了。
2. qxmpp
http://code.google.com/p/qxmpp/
純QT實作,易于使用。目前版本是0.3,一直在更新。
qxmpp實作了很多XMPP Extensions協定,比如檔案傳輸,vcard,avatar等功能。
3. jreen
http://gitorious.org/jreen
純QT實作,易于使用。一直在更新。
4. psi(libiris)
http://psi-im.org/
psi從0.14版本之後就沒有更新了。
5. psi-dev
http://code.google.com/p/psi-dev/
一群熱心的開發人員繼續對psi進行維護和更新,目前版本是0.15。
6. libpurple
http://pidgin.im/download/
支援多種IM的協定庫,最新版本是2.9.0。
jabber xmpp QT-IM用戶端
1. vacuum-im
http://code.google.com/p/vacuum-im/
純QT實作,易于使用。目前版本是1.1,一直在更新。
vacuum實作了很多XMPP Extensions協定,比如檔案傳輸,vcard,avatar,組聊等功能;采用插件方式,易于擴充。
2. qutecom
http://trac.qutecom.org/
qutecom的IM庫采用libpurple,內建了sip電話的功能。最新穩定版是2.2.1,開發版是3.0 alpha。
qutecom使用了大量的開源庫,包括:boost,ffmpeg,libosip2等等,編譯過程複雜,編譯速度極慢。
3. qutim
http://qutim.org/
qutim是支援多協定、跨平台(包括mobile)的IM,其中jabber協定使用jreen。系統采用插件功能,易于擴充。
4. kadu
http://www.kadu.net/w/English:Main_Page
kadu支援的IM協定包括Gadu-Gadu和jabber(使用libiris),程式結構清晰,界面友好,易于使用。
5. jabbin
http://sourceforge.net/projects/jabbin/
jabbin的IM協定使用libiris,使用libjingle庫提供語音功能。jabbin的代碼還使用了很多QT3的功能,有點老舊,因為QT5都快出來了。
6. kopete
http://kopete.kde.org/
kopete是KDE平台支援多協定的IM,其中jabber協定使用libiris。從0.50.80之後就是打打更新檔而已。
IM用戶端功能
一個完整的IM用戶端,功能還是很複雜的,基本包括:
通訊協定層:和IM伺服器互動;
使用者管理:組織機構(分組,企業通訊錄),名片管理(vcard),頭像顯示(avatar),使用者狀态,使用者查找等;
文字聊天功能:聊天方式包括海聊,組聊,私聊;表情管理;貼圖功能;拼寫檢查;聊天風格;
音視訊聊天功能:使用google的webrtc;
聊天曆史記錄:查詢;
檔案傳輸:線上與離線檔案傳輸;
界面風格:吸引使用者的首要因素。