1晃跺、是否使用過XMPP,XMPP的實(shí)現(xiàn)原理
1、XMPP是一個(gè)即時(shí)通訊的協(xié)議田盈,它規(guī)范了用于即時(shí)通信在網(wǎng)絡(luò)上數(shù)據(jù)傳輸格式的贴妻,比如登錄,獲取好友列表等等的格式只磷。XMPP在網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)是XML格式
比如登錄:把用戶名和密碼放在xml的標(biāo)簽中经磅,傳輸?shù)椒?wù)器
2、XMPP是一個(gè)基于個(gè)Socket通過的網(wǎng)絡(luò)協(xié)議喳瓣,目的是為了保存長連接,以實(shí)現(xiàn)即時(shí)通訊功能
3赞别、XMPP的客戶端是使用一個(gè)XMPPFramework框架實(shí)現(xiàn)
4畏陕、XMPP的服務(wù)器是使用Openfire,一個(gè)開源的服務(wù)器
5、客戶端獲取到服務(wù)器發(fā)送過來的好友消息仿滔,客戶端需要對XML進(jìn)行解析惠毁,使用的解析框架的KissXML框架,而不是NSXMLParser/GDataXML
2崎页、在使用XMPP的時(shí)候有沒有遇到什么困難
1鞠绰、發(fā)送附件(圖片,語音飒焦,文檔…)時(shí)比較麻煩
2蜈膨、XMPP框架沒有提供發(fā)送附件的功能,需要自己實(shí)現(xiàn)
- 實(shí)現(xiàn)方法牺荠,把文件上傳到文件服務(wù)器翁巍,上傳成功后獲取文件保存路徑,再把附件的路徑發(fā)送給好友休雌,好友從路徑下載附件灶壶。
3、是否使用過環(huán)信杈曲,簡單的說下環(huán)信的實(shí)現(xiàn)原理
1驰凛、環(huán)信是一個(gè)即時(shí)通信的服務(wù)提供商
2胸懈、環(huán)信使用的是XMPP協(xié)議,它是再XMPP的基礎(chǔ)上進(jìn)行二次開發(fā)恰响,對服務(wù)器Openfire和客戶端進(jìn)行功能模型的添加和客戶端SDK的封裝趣钱,環(huán)信的本質(zhì)還是使用XMPP,基本于Socket的網(wǎng)絡(luò)通信
3渔隶、環(huán)信內(nèi)部實(shí)現(xiàn)了數(shù)據(jù)緩存羔挡,會把聊天記錄添加到數(shù)據(jù)庫,把附件(如音頻文件间唉,圖片文件)下載到本地绞灼,使程序員更多時(shí)間是花到用戶即時(shí)體驗(yàn)上
4、環(huán)信內(nèi)部已經(jīng)實(shí)現(xiàn)了視頻呈野,音頻低矮,圖片,其它附件發(fā)送功能
5被冒、使用環(huán)信军掂,可以節(jié)約時(shí)間成本
*不需要公司內(nèi)部搭建服務(wù)器
*客戶端的開發(fā),使用環(huán)信SDK比使用XMPPFramework更簡潔方便
17昨悼、如果要在App中做一個(gè)即時(shí)通訊的功能蝗锥,你會怎么做?
xmpp率触,環(huán)信终议,融云
2、用1~2句話概括你對XMPP或是SIP的了解葱蝗,二選一即可穴张,兩者都答更佳。
全稱:可擴(kuò)展通訊和表示協(xié)議
英文:Extensible Messaging and Presence Protocol
英文縮寫:XMPPXMPP是一種基于標(biāo)準(zhǔn)通用標(biāo)記語言的子集XML的協(xié)議两曼,通過Socket長連接皂甘、以XML格式進(jìn)行基本信息交換、C/S S/S多種架構(gòu)的聊天協(xié)議悼凑。
XMPP的前身是Jabber偿枕,一個(gè)開源形式組織產(chǎn)生的網(wǎng)絡(luò)即時(shí)通信協(xié)議。XMPP目前被IETF國際標(biāo)準(zhǔn)組織完成了標(biāo)準(zhǔn)化工作户辫。標(biāo)準(zhǔn)化的核心結(jié)果分為兩部分益老;
*核心的XML流傳輸協(xié)議
*基于XML流傳輸?shù)募磿r(shí)通訊擴(kuò)展應(yīng)用XMPP的核心XML流傳輸協(xié)議的定義使得XMPP能夠在一個(gè)比以往網(wǎng)絡(luò)通信協(xié)議更規(guī)范的平臺上。借助于XML易于解析和閱讀的特性寸莫,使得XMPP的協(xié)議能夠非常漂亮捺萌。
XMPP的即時(shí)通訊擴(kuò)展應(yīng)用部分是根據(jù)IETF在這之前對即時(shí)通訊的一個(gè)抽象定義的,與其他業(yè)已得到廣泛使用的即時(shí)通訊協(xié)議,諸如AIM桃纯,QQ等有功能完整酷誓,完善等先進(jìn)性。
226.做過IM開發(fā)么,談?wù)剬MPPFramework的了解
XMPPFramework是一個(gè)OS X/iOS平臺的開源項(xiàng)目态坦,使用Objective-C實(shí)現(xiàn)了XMPP協(xié)議(RFC-3920)盐数,同時(shí)還提供了用于讀寫XML的工具,大大簡化了基于XMPP的通信應(yīng)用的開發(fā)伞梯。
XMPP中常用對象
*XMPPStream:xmpp基礎(chǔ)服務(wù)類
*XMPPRoster:好友列表類
*XMPPRosterCoreDataStorage:好友列表(用戶賬號)在coredata中的操作類
*XMPPvCardCoreDataStorage:好友名片(昵稱玫氢,簽名,性別谜诫,年齡等信息)在coredata中的操作類
*XMPPvCardTemp:好友名片實(shí)體類漾峡,從數(shù)據(jù)庫里取出來的都是它
*xmppvCardAvatarModule:好友頭像
*XMPPReconnect:如果失去連接,自動(dòng)重連
*XMPPRoom:提供多用戶聊天支持
*XMPPPubSub:發(fā)布訂閱源碼地址:http://code.google.com/p/xmppframework/,目前需要使用git才能download到源碼喻旷。