XMPP --> 環(huán)信
1.XMPP是網絡層基于TCP協(xié)議竞漾,數據層基于XML協(xié)議的即時通訊協(xié)議。所以要實現通訊的話,就要跟TCP一樣私爷,遵循3次握手,建立連接工秩,持有一個長連接,連接期間發(fā)送消息眉菱,消息的格式就是XMPP俭缓,是一個流不从,可以分段發(fā)歹袁,別人也可以分段的將消息給我,在stream開始,/stream結束夸浅。
弊端
2.網絡層: TCP是一種長連接亿胸,因為在這個IP不固定的時代吟温,用戶鎖屏,home律秃,切換其他APP等都會導致自己的TCP連接斷開爬橡,所以每次都需要再一次重新建立長連接“舳可以通過心跳輪循(每五秒鐘向服務器問一次糙申,每次通過短連接詢問,可以用http的GET或者POST)的方式船惨,服務器會告訴你是否有消息郭宝,如果有再用XMPP方式請求,請求完畢之后掷漱,再把TCP斷開,繼續(xù)心跳輪循榄檬。
3.數據層:XML數據體積比較大有冗余卜范,造成不必要的流量浪費,但是沒有辦法解決鹿榜。
所以在工作的時候海雪,我們通常用環(huán)信來即時通訊,同時環(huán)信還集成了第三方登陸舱殿,實現登陸功能奥裸。
TCP三次握手協(xié)議
TCP三次握手
三次握手協(xié)議指的是在發(fā)送數據的準備階段,服務器端和客戶端之間需要進行三次交互:
第一次握手:客戶端發(fā)送syn包(syn=j)到服務器沪袭,并進入SYN_SEND狀態(tài)湾宙,等待服務器確認;
第二次握手:服務器收到syn包冈绊,必須確認客戶的syn(ack=j+1)侠鳄,同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包死宣,此時服務器進入SYN_RECV狀態(tài)伟恶;
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發(fā)送確認包ACK(ack=k+1)毅该,此包發(fā)送完畢博秫,客戶端和服務器進入ESTABLISHED狀態(tài)潦牛,完成三次握手。
連接建立后挡育,客戶端和服務器就可以開始進行數據傳輸了巴碗。