有沒有做過即時(shí)通訊?是否使用過XMPP,講述一下XMPP的實(shí)現(xiàn)原理
XMPP是一個(gè)即時(shí)通訊的協(xié)議,它規(guī)范了用于即時(shí)通信在網(wǎng)絡(luò)上數(shù)據(jù)傳輸格式的,比如登錄,獲取好友列表等等的格式,XMPP在網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)是XML格式
比如登錄:把用戶名和密碼放在xml的標(biāo)簽中,傳輸?shù)椒?wù)器
XMPP是一個(gè)基于Socket通過的網(wǎng)絡(luò)協(xié)議,目的就是為了保護(hù)長連接,以實(shí)現(xiàn)即時(shí)通訊功能
XMPP的客戶端是使用一個(gè)XMPPFramework框架實(shí)現(xiàn)
XMPP的服務(wù)器是使用Openfire,一個(gè)開源的服務(wù)器
客戶端獲取到服務(wù)器發(fā)送過來的好友消息,客戶端需要對(duì)XML進(jìn)行解析,使用的解析框架的KissXML框架,而不是NSXMLParser/GDataXML。
1.發(fā)送附件(圖片,語言,文檔等等)時(shí)比較麻煩
2.XMPP框架沒有提供發(fā)送附件的功能,需要自己實(shí)現(xiàn)(但是環(huán)信已經(jīng)把這些功能集成進(jìn)去了)
實(shí)現(xiàn)方法,把文件上傳到文件服務(wù)器,上傳成功后獲取文件保存路徑,再把附件的路徑發(fā)送給好友
更為直觀形象的表達(dá):
是否使用過環(huán)信,簡(jiǎn)單說下環(huán)信的實(shí)現(xiàn)原理
環(huán)信是一個(gè)即時(shí)通訊的服務(wù)提供商
環(huán)信使用的是XMPP協(xié)議,它是在XMPP的基礎(chǔ)上進(jìn)行二次開發(fā),對(duì)服務(wù)器Openfire和客戶端進(jìn)行功能模型的添加和客戶端SDK的封裝,環(huán)信的本質(zhì)還是使用XMPP,基于Socket的網(wǎng)絡(luò)通信
環(huán)信內(nèi)部實(shí)現(xiàn)了數(shù)據(jù)緩存,會(huì)把聊天記錄添加到數(shù)據(jù)庫,把附件(如音頻文件,圖片文件)下載到本地,使程序員更多時(shí)間是花到用戶即時(shí)體驗(yàn)上
環(huán)信內(nèi)部已經(jīng)實(shí)現(xiàn)了視頻、音頻、圖片、其他附件發(fā)送功能,
環(huán)信使用公司可以節(jié)約時(shí)間成本
不需要公司內(nèi)部搭建服務(wù)器
客戶端的開發(fā),使用環(huán)信SDK比XMPPFramework更簡(jiǎn)潔方便