WebSocket
WebSocket是HTML5開始提供的一種瀏覽器與服務(wù)器間進(jìn)行全雙工通訊的網(wǎng)絡(luò)技術(shù)。 WebSocket通信協(xié)議于2011年被IETF定為標(biāo)準(zhǔn) RFC 6455,WebSocketAPI 被 W3C 定為標(biāo)準(zhǔn)。
在 WebSocket API 中,瀏覽器和服務(wù)器只需要要做一個(gè)握手的動作,然后,瀏覽器和服務(wù)器之間就形成了一條快速通道。兩者之間就直接可以數(shù)據(jù)互相傳送。
現(xiàn)在,很多網(wǎng)站為了實(shí)現(xiàn)即時(shí)通訊(real-time),所用的技術(shù)都是輪詢(polling)。輪詢是在特定的的時(shí)間間隔(time interval)(如每1秒),由瀏覽器對服務(wù)器發(fā)出HTTP request,然后由服務(wù)器返回最新的數(shù)據(jù)給客服端的瀏覽器。這種傳統(tǒng)的HTTP request d的模式帶來很明顯的缺點(diǎn) – 瀏覽器需要不斷的向服務(wù)器發(fā)出請求(request),然而HTTP request 的header是非常長的,里面包含的數(shù)據(jù)可能只是一個(gè)很小的值,這樣會占用很多的帶寬。
而最比較新的技術(shù)去做輪詢的效果是Comet – 用了AJAX。但這種技術(shù)雖然可達(dá)到全雙工通信,但依然需要發(fā)出請求(reuqest)。
在 WebSocket API,瀏覽器和服務(wù)器只需要要做一個(gè)握手的動作,然后,瀏覽器和服務(wù)器之間就形成了一條快速通道。兩者之間就直接可以數(shù)據(jù)互相傳送。在此WebSocket 協(xié)議中,為我們實(shí)現(xiàn)即使服務(wù)帶來了兩大好處:
1. Header
互相溝通的Header是很小的-大概只有 2 Bytes
2. Server Push
服務(wù)器可以主動傳送數(shù)據(jù)給客戶端
