XMPP與環(huán)信

XMPP --> 環(huán)信
1.XMPP是網(wǎng)絡(luò)層基于TCP協(xié)議,數(shù)據(jù)層基于XML協(xié)議的即時通訊協(xié)議。所以要實現(xiàn)通訊的話,就要跟TCP一樣,遵循3次握手,建立連接,持有一個長連接,連接期間發(fā)送消息,消息的格式就是XMPP,是一個流,可以分段發(fā),別人也可以分段的將消息給我,在stream開始,/stream結(jié)束。

弊端

2.網(wǎng)絡(luò)層: TCP是一種長連接,因為在這個IP不固定的時代,用戶鎖屏,home,切換其他APP等都會導(dǎo)致自己的TCP連接斷開,所以每次都需要再一次重新建立長連接??梢酝ㄟ^心跳輪循(每五秒鐘向服務(wù)器問一次,每次通過短連接詢問,可以用http的GET或者POST)的方式,服務(wù)器會告訴你是否有消息,如果有再用XMPP方式請求,請求完畢之后,再把TCP斷開,繼續(xù)心跳輪循。

3.數(shù)據(jù)層:XML數(shù)據(jù)體積比較大有冗余,造成不必要的流量浪費,但是沒有辦法解決。

所以在工作的時候,我們通常用環(huán)信來即時通訊,同時環(huán)信還集成了第三方登陸,實現(xiàn)登陸功能。

TCP三次握手協(xié)議

TCP三次握手

三次握手協(xié)議指的是在發(fā)送數(shù)據(jù)的準(zhǔn)備階段,服務(wù)器端和客戶端之間需要進(jìn)行三次交互:

第一次握手:客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);

第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的syn(ack=j+1),同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包,此時服務(wù)器進(jìn)入SYN_RECV狀態(tài);

第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。

連接建立后,客戶端和服務(wù)器就可以開始進(jìn)行數(shù)據(jù)傳輸了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容