Websocket protocol是html5一種新協(xié)議,實(shí)現(xiàn)了瀏覽器與服務(wù)器full-dulpex压真, 一開始的握手需要http請求完成娩嚼。
原理:
websocket同http一樣也是應(yīng)用層協(xié)議,但是一種雙向的通信協(xié)議滴肿,建立在tcp之上的岳悟。
連接過程:
瀏覽器、服務(wù)器建立tcp連接泼差,三次握手贵少。通信的基礎(chǔ),傳輸控制層堆缘,若失敗后續(xù)不執(zhí)行滔灶。
tcp連接成功后,瀏覽器通過http協(xié)議向服務(wù)器傳送websocket支持的版本號(hào)等信息吼肥。(開始前的http握手)
服務(wù)器收到客戶端的握手請求后录平,采用http協(xié)議回饋數(shù)據(jù)。
收到連接成功的消息后潜沦,通過tcp通道進(jìn)行傳輸萄涯。
目的:
實(shí)現(xiàn)即時(shí)通訊,替代輪詢或者comet技術(shù)唆鸡。
技術(shù)對比:
技術(shù)名稱
http請求非持久化涝影,單向網(wǎng)絡(luò)協(xié)議,建立后只允許瀏覽器向服務(wù)器發(fā)送請求后争占,服務(wù)器才能反饋相應(yīng)的數(shù)據(jù)燃逻。
劣勢:
不能保證消息的時(shí)效性序目,新的工單信息不能即時(shí)看到
增加運(yùn)維成本
輪詢輪詢在特定的時(shí)間間隔,由瀏覽器向服務(wù)器發(fā)送request伯襟,然后將數(shù)據(jù)返回給瀏覽器猿涨,解決了消息的時(shí)效性問題,但需要每一個(gè)客戶端每秒向服務(wù)發(fā)送請求姆怪。
劣勢:
Http request的header非常長叛赚,為了傳輸小數(shù)據(jù),付出代價(jià)太大稽揭,不合算俺附,占用較多寬帶。
websocket只需要服務(wù)器和瀏覽器通過http協(xié)議進(jìn)行一個(gè)握手動(dòng)作溪掀,單獨(dú)建立一條tcp的通信進(jìn)行數(shù)據(jù)傳輸事镣。
優(yōu)勢:
保證消息的時(shí)效性
優(yōu)化資源利用
減輕后臺(tái)某些系統(tǒng)的運(yùn)維成本。
建立的tcp通信通道揪胃,可以看到系統(tǒng)當(dāng)前在線人數(shù)多少
辦公協(xié)同工具必須用到的璃哟。
劣勢:websocket不穩(wěn)定