1. WebSocket 是什么
一言以蔽之岛都,WebSocket允許服務(wù)器「主動(dòng)」給瀏覽器發(fā)消息淑履,如教程演示截圖稳摄,服務(wù)器會(huì)主動(dòng)推送比特幣價(jià)格給瀏覽器。
2. 為什么要用 WebSocket
實(shí)時(shí)獲取服務(wù)端數(shù)據(jù)這種需求泼橘,在使用 WebSocket 之前也是可以做到的涝动,主要方式就是輪詢。比如 javascript上一個(gè)定時(shí)器炬灭,每隔幾秒鐘向服務(wù)端發(fā)送消息詢問(wèn)最新價(jià)格醋粟,然后顯示在瀏覽器上。但是這種瀏覽器主動(dòng)輪詢的方式有幾個(gè)弊端:
服務(wù)器壓力大重归。假設(shè)瀏覽器每隔一秒鐘發(fā)出請(qǐng)求米愿,如果同時(shí)有 100 個(gè)用戶在訪問(wèn)當(dāng)前頁(yè)面,那么每秒鐘就至少有 100 個(gè)請(qǐng)求要處理鼻吮,服務(wù)器壓力是很大的育苟。
浪費(fèi)嚴(yán)重。倘若服務(wù)器數(shù)據(jù)每隔 60 秒才有新數(shù)據(jù)椎木,那么其中有59次訪問(wèn)都是浪費(fèi)的违柏。
實(shí)時(shí)性差。畢竟是每隔一秒鐘才發(fā)出請(qǐng)求香椎,假如說(shuō)為了緩解服務(wù)器的壓力漱竖,做成每隔 10 秒才發(fā)出請(qǐng)求,就很有可能錯(cuò)過(guò)數(shù)據(jù)的更新士鸥,沒(méi)有及時(shí)拿到數(shù)據(jù)。
以上就是瀏覽器傳統(tǒng)的輪詢方式的弊端谆级,而使用 WebSocket 就可以解決這些問(wèn)題烤礁。
服務(wù)器壓力問(wèn)題讼积。WebSocket 是服務(wù)端向?yàn)g覽器主動(dòng)推送消息,只有服務(wù)器有新數(shù)據(jù)的時(shí)候才需要推送脚仔,沒(méi)有數(shù)據(jù)就不用推送勤众,所以服務(wù)器性能壓力小很多
浪費(fèi)問(wèn)題。每次有效數(shù)據(jù)才推送鲤脏,沒(méi)有新數(shù)據(jù)就不推送们颜,不存在浪費(fèi)問(wèn)題
實(shí)時(shí)性問(wèn)題。一旦有了新數(shù)據(jù)馬上就推送猎醇,瀏覽器實(shí)時(shí)獲取新數(shù)據(jù)窥突。
3. 怎么開(kāi)發(fā) WebSocket 應(yīng)用
WebSocket 既然好處那么多,那么如何開(kāi)發(fā)支持 WebSocket 的 J2EE 應(yīng)用呢硫嘶?
可以運(yùn)行的項(xiàng)目
老規(guī)矩阻问,我會(huì)先給大家可以跑起來(lái)的項(xiàng)目,確認(rèn)是走得通的沦疾。 不要大家搞半天称近,項(xiàng)目本身都是有問(wèn)題的是越,實(shí)在是浪費(fèi)大家時(shí)間 (我在基于百度學(xué)習(xí)的過(guò)程中兵迅,就搜到大量未經(jīng)驗(yàn)證的教程,各種跑不通份蝴,浪費(fèi)很多時(shí)間忆畅,真是感到深?lèi)和唇^)衡未。
從創(chuàng)建項(xiàng)目開(kāi)始擼起,并提供必要的jar包下載
服務(wù)端代碼開(kāi)發(fā)
前端代碼開(kāi)發(fā)
如此這般照著做一輪邻眷,就可以看到效果了眠屎。
疑難問(wèn)題
最后把開(kāi)發(fā)這個(gè) WebSocket 教程期間碰到的疑難問(wèn)題也單獨(dú)強(qiáng)調(diào)了一下,萬(wàn)一有同學(xué)有類(lèi)似的問(wèn)題也少走彎路肆饶。
4. WebSocket 教程地址
http://how2j.cn/k/websocket/websocket-tutorial/1625.html?tid=115
教程由個(gè)人完成改衩,局限于個(gè)人的經(jīng)驗(yàn)和視野,有諸多不足之處驯镊,請(qǐng)各位多多指點(diǎn)葫督,謝謝。