概述
web端即時通訊技術(shù)
即時通訊技術(shù)簡單的說就是實現(xiàn)這一種功能:服務端可以即時的將數(shù)據(jù)的更新或者變化反應到客戶端卜录,例如消息即時推送等功能都是通過這種技術(shù)實現(xiàn)的戈擒。這種限制出現(xiàn)的主要原因是一般的web通訊都是流浪器先發(fā)出請求到服務器,服務器在進行響應完成數(shù)據(jù)的更新艰毒。實現(xiàn)web端即時通訊的方法
實現(xiàn)即時通訊主要有四種方式筐高,它們分別是短輪詢、長輪詢(comet)、長連接(SSE)柑土、websocket蜀肘。它們大體可以分為兩類,一種是在http基礎(chǔ)上實現(xiàn)稽屏,其中包括短輪詢扮宠、comet和SEE;另一種不是建立在http基礎(chǔ)上狐榔,即websocket坛增。下面分別介紹下這四種輪詢方式,以及它們的優(yōu)缺點:
(1)短輪詢
短輪詢的基本思路就是瀏覽器每隔一段時間發(fā)送http請求薄腻,服務器在收到請求后收捣,不論是否有數(shù)據(jù)更新,都直接進行響應庵楷。這種方式是即時通訊罢艾,本質(zhì)上是瀏覽器發(fā)送請求,服務器接受請求的一個過程嫁乘,通過讓客戶端不斷的進行請求昆婿,使得客戶端能夠模擬實時的收到服務器的數(shù)據(jù)。
優(yōu)點:
簡單蜓斧,易于理解仓蛆,實現(xiàn)起來也沒有什么技術(shù)難點。
缺點:
這種凡是由于需要不斷地建立連接挎春,嚴重的浪費瀏覽器和客戶端資源看疙。尤其是在客戶端,具體來說如果有數(shù)量級較大的人同時基于短輪詢應用中直奋,那么每個用戶的客戶端都會瘋狂的相服務器發(fā)送http請求能庆,而且不會間斷,人數(shù)越多服務器壓力越大脚线,這是很不合理的搁胆。
(2)comet
comet指得是,當服務器收到客戶端發(fā)來的請求后不會直接進行響應邮绿,而是先將請求掛起渠旁,然后判斷服務器端數(shù)據(jù)是否有更新。如果有船逮,則進行響應顾腊,如果沒有數(shù)據(jù),則到達一定時間限制(服務器設置)后關(guān)閉挖胃。
優(yōu)點:http連接請求較少杂靶,節(jié)約了資源梆惯;
缺點:應為掛起的時間長也消耗了不好資源;
(3)SEE
SEE是HTML5新增的功能吗垮,全稱為server-sentEvents垛吗。它可以允許服務端推送數(shù)據(jù)到客戶端,SEE在本質(zhì)上就與之前的長輪詢和短輪詢不同抱既,雖然都是基于http協(xié)議的职烧,但是輪訓需要客戶端發(fā)送請求。而SEE最大的特點就是不需要客戶端發(fā)送請求防泵,可以時間只要服務端數(shù)據(jù)更新就可以馬上發(fā)送到客戶端蚀之。
優(yōu)點: 不需要建立或者保持大量的客戶端服務器的請求,大大節(jié)約了資源提升了性能捷泞。
(4)websocket
websocket是HTML5定義的新協(xié)議足删,與傳統(tǒng)的協(xié)議不同,該協(xié)議可以實現(xiàn)服務器與客戶端之間的全雙工通訊锁右。簡單來說失受,首先需要在客戶端建立起一個連接,這部分需要http咏瑟,連接一旦建立拂到,客戶端和服務器就處于平等地位÷肱ⅲ可以相互發(fā)送數(shù)據(jù)兄旬,不存在請求和響應的區(qū)別。
優(yōu)點: 實現(xiàn)了雙全工通訊余寥;
缺點: 服務器邏輯非常復雜领铐;四種通訊方式的對比
從兼容性考慮: 短輪詢 > 長輪詢 > SEE > websocket;
從性能方面考慮: websocket > SEE > 長輪詢 > 短輪詢宋舷;