基于 Java 的 WebSocket 教程

1. WebSocket 是什么

一言以蔽之,WebSocket允許服務器「主動」給瀏覽器發消息,如教程演示截圖,服務器會主動推送比特幣價格給瀏覽器。

2. 為什么要用 WebSocket

實時獲取服務端數據這種需求,在使用 WebSocket 之前也是可以做到的,主要方式就是輪詢。比如 javascript上一個定時器,每隔幾秒鐘向服務端發送消息詢問最新價格,然后顯示在瀏覽器上。但是這種瀏覽器主動輪詢的方式有幾個弊端:

服務器壓力大。假設瀏覽器每隔一秒鐘發出請求,如果同時有 100 個用戶在訪問當前頁面,那么每秒鐘就至少有 100 個請求要處理,服務器壓力是很大的。

浪費嚴重。倘若服務器數據每隔 60 秒才有新數據,那么其中有59次訪問都是浪費的。

實時性差。畢竟是每隔一秒鐘才發出請求,假如說為了緩解服務器的壓力,做成每隔 10 秒才發出請求,就很有可能錯過數據的更新,沒有及時拿到數據。

以上就是瀏覽器傳統的輪詢方式的弊端,而使用 WebSocket 就可以解決這些問題。

服務器壓力問題。WebSocket 是服務端向瀏覽器主動推送消息,只有服務器有新數據的時候才需要推送,沒有數據就不用推送,所以服務器性能壓力小很多

浪費問題。每次有效數據才推送,沒有新數據就不推送,不存在浪費問題

實時性問題。一旦有了新數據馬上就推送,瀏覽器實時獲取新數據。

3. 怎么開發 WebSocket 應用

WebSocket 既然好處那么多,那么如何開發支持 WebSocket 的 J2EE 應用呢?

可以運行的項目

老規矩,我會先給大家可以跑起來的項目,確認是走得通的。 不要大家搞半天,項目本身都是有問題的,實在是浪費大家時間 (我在基于百度學習的過程中,就搜到大量未經驗證的教程,各種跑不通,浪費很多時間,真是感到深惡痛絕)。

從創建項目開始擼起,并提供必要的jar包下載

服務端代碼開發

前端代碼開發

如此這般照著做一輪,就可以看到效果了。

疑難問題

最后把開發這個 WebSocket 教程期間碰到的疑難問題也單獨強調了一下,萬一有同學有類似的問題也少走彎路。

4. WebSocket 教程地址

http://how2j.cn/k/websocket/websocket-tutorial/1625.html?tid=115

教程由個人完成,局限于個人的經驗和視野,有諸多不足之處,請各位多多指點,謝謝。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容