1、是否使用過XMPP,XMPP的實現(xiàn)原理
1、XMPP是一個即時通訊的協(xié)議,它規(guī)范了用于即時通信在網(wǎng)絡(luò)上數(shù)據(jù)傳輸格式的,比如登錄,獲取好友列表等等的格式。XMPP在網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)是XML格式
比如登錄:把用戶名和密碼放在xml的標簽中,傳輸?shù)椒?wù)器
2、XMPP是一個基于個Socket通過的網(wǎng)絡(luò)協(xié)議,目的是為了保存長連接,以實現(xiàn)即時通訊功能
3、XMPP的客戶端是使用一個XMPPFramework框架實現(xiàn)
4、XMPP的服務(wù)器是使用Openfire,一個開源的服務(wù)器
5、客戶端獲取到服務(wù)器發(fā)送過來的好友消息,客戶端需要對XML進行解析,使用的解析框架的KissXML框架,而不是NSXMLParser/GDataXML
2、在使用XMPP的時候有沒有遇到什么困難
1、發(fā)送附件(圖片,語音,文檔…)時比較麻煩
2、XMPP框架沒有提供發(fā)送附件的功能,需要自己實現(xiàn)
- 實現(xiàn)方法,把文件上傳到文件服務(wù)器,上傳成功后獲取文件保存路徑,再把附件的路徑發(fā)送給好友,好友從路徑下載附件。
3、是否使用過環(huán)信,簡單的說下環(huán)信的實現(xiàn)原理
1、環(huán)信是一個即時通信的服務(wù)提供商
2、環(huán)信使用的是XMPP協(xié)議,它是再XMPP的基礎(chǔ)上進行二次開發(fā),對服務(wù)器Openfire和客戶端進行功能模型的添加和客戶端SDK的封裝,環(huán)信的本質(zhì)還是使用XMPP,基本于Socket的網(wǎng)絡(luò)通信
3、環(huán)信內(nèi)部實現(xiàn)了數(shù)據(jù)緩存,會把聊天記錄添加到數(shù)據(jù)庫,把附件(如音頻文件,圖片文件)下載到本地,使程序員更多時間是花到用戶即時體驗上
4、環(huán)信內(nèi)部已經(jīng)實現(xiàn)了視頻,音頻,圖片,其它附件發(fā)送功能
5、使用環(huán)信,可以節(jié)約時間成本
*不需要公司內(nèi)部搭建服務(wù)器
*客戶端的開發(fā),使用環(huán)信SDK比使用XMPPFramework更簡潔方便
17、如果要在App中做一個即時通訊的功能,你會怎么做?
xmpp,環(huán)信,融云
2、用1~2句話概括你對XMPP或是SIP的了解,二選一即可,兩者都答更佳。
全稱:可擴展通訊和表示協(xié)議
英文:Extensible Messaging and Presence Protocol
英文縮寫:XMPPXMPP是一種基于標準通用標記語言的子集XML的協(xié)議,通過Socket長連接、以XML格式進行基本信息交換、C/S S/S多種架構(gòu)的聊天協(xié)議。
XMPP的前身是Jabber,一個開源形式組織產(chǎn)生的網(wǎng)絡(luò)即時通信協(xié)議。XMPP目前被IETF國際標準組織完成了標準化工作。標準化的核心結(jié)果分為兩部分;
*核心的XML流傳輸協(xié)議
*基于XML流傳輸?shù)募磿r通訊擴展應(yīng)用XMPP的核心XML流傳輸協(xié)議的定義使得XMPP能夠在一個比以往網(wǎng)絡(luò)通信協(xié)議更規(guī)范的平臺上。借助于XML易于解析和閱讀的特性,使得XMPP的協(xié)議能夠非常漂亮。
XMPP的即時通訊擴展應(yīng)用部分是根據(jù)IETF在這之前對即時通訊的一個抽象定義的,與其他業(yè)已得到廣泛使用的即時通訊協(xié)議,諸如AIM,QQ等有功能完整,完善等先進性。
226.做過IM開發(fā)么,談?wù)剬MPPFramework的了解
XMPPFramework是一個OS X/iOS平臺的開源項目,使用Objective-C實現(xiàn)了XMPP協(xié)議(RFC-3920),同時還提供了用于讀寫XML的工具,大大簡化了基于XMPP的通信應(yīng)用的開發(fā)。
XMPP中常用對象
*XMPPStream:xmpp基礎(chǔ)服務(wù)類
*XMPPRoster:好友列表類
*XMPPRosterCoreDataStorage:好友列表(用戶賬號)在coredata中的操作類
*XMPPvCardCoreDataStorage:好友名片(昵稱,簽名,性別,年齡等信息)在coredata中的操作類
*XMPPvCardTemp:好友名片實體類,從數(shù)據(jù)庫里取出來的都是它
*xmppvCardAvatarModule:好友頭像
*XMPPReconnect:如果失去連接,自動重連
*XMPPRoom:提供多用戶聊天支持
*XMPPPubSub:發(fā)布訂閱源碼地址:http://code.google.com/p/xmppframework/,目前需要使用git才能download到源碼。