發表於2024-12-24
精通Java WebSocket應用開發,充分利用先進的通信技術構建動態企業級Web應用。《Java WebSocket編程 開發、部署和保護動態Web應用》一書由Java WebSocket編程專傢撰寫,提供瞭實際的開發策略和詳盡的示例應用。本書詮釋瞭如何設計客戶端/服務器應用、與全雙工消息通信協作、建立連接、創建端點、處理路徑映射以及保護數據。你也將學到如何加密Web傳輸並且使用Java WebSocket增強既有應用。
主要內容
● 使用Java WebSocket API開發Web應用
● 創建和發布注解式端點和編程式端點
● 管理WebSocket端點的生命周期事件
● 維護端點生命周期中可靠的連接
● 管理同步和異步消息通信
● 為復雜消息通信定義編碼和解碼策略
● 配置消息通信超時、大小限製和異常
● 消息路徑映射及將入站URI路由到Web容器
● 保護數據、認證用戶以及加密連接
Danny Coward是Oracle的首席架構師和Web架構師。他是Java EE、Java SE/JavaFX中WebSocket Java API的規範領導者。他在Oracle主導WebSocket工作,他是Java WebSocket編程方麵的權威專傢。
目 錄
第1章 Java WebSocket基本原理 1
1.1 創建第一個WebSocket應用 2
1.1.1 創建WebSocket端點 3
1.1.2 部署端點 5
1.1.3 創建WebSocket客戶端 6
1.2 WebSocket端點 9
1.3 編程式端點 10
1.4 深入Echo示例 17
1.4.1 部署階段 17
1.4.2 接收第一個連接 19
1.4.3 WebSocket消息通信 22
1.5 本章小結 23
第2章 Java WebSocket生命周期 25
2.1 WebSocket協議 26
2.2 Java WebSocket生命周期 27
2.3 Java WebSocket API中的WebSocket生命周期 29
2.3.1 注解式端點事件處理 30
2.3.2 Lifecycle示例 38
2.3.3 編程式端點生命周期 46
2.3.4 實例數目及綫程機製 49
2.4 本章小結 51
第3章 消息通信基礎 53
3.1 消息通信概述 54
3.1.1 發送消息 54
3.1.2 接收WebSocket消息 61
3.2 DrawingBoard應用 73
3.3 消息通信和綫程 94
3.3.1 WebSocket端點綫程和消息通信 94
3.3.2 綫程與編碼器和解碼器的生命周期 95
3.4 本章小結 95
第4章 配置與Session 97
4.1 Session狀態和邏輯端點狀態 98
4.2 Chat示例 99
4.3 配置端點:ClientEndpointConfig和
ServerEndpointConfig 111
4.3.1 提供和訪問端點配置信息 111
4.3.2 配置選項介紹 113
4.3.3 WebSocket子協議和WebSocket擴展 115
4.4 WebSocket Session 123
4.5 本章小結 128
第5章 高級消息處理 129
5.1 檢查連接:Ping和Pong 130
5.2 異步發送WebSocket消息 132
5.2.1 通過Future發送WebSocket消息 133
5.2.2 通過Handler發送WebSocket消息 135
5.2.3 何時通過Future發送以及何時通過Handler發送 136
5.2.4 異步發送超時 137
5.3 消息批處理 138
5.4 緩衝、消息分片和數據幀 140
5.5 保證消息傳遞 142
5.6 發送消息API總結 143
5.7 MessageModes應用 144
5.7.1 MessageModes應用概述 145
5.7.2 查看MessageModes應用的代碼 147
5.7.3 MessageModes應用中需要注意的事情 155
5.8 本章小結 158
第6章 WebSocket路徑映射 159
6.1 URI術語 160
6.2 WebSocket路徑映射 161
6.2.1 精確URI映射 161
6.2.2 URI模闆路徑 164
6.2.3 URI模闆匹配相關的API 167
6.2.4 在運行時訪問路徑信息 173
6.2.5 查詢字符串和請求參數 174
6.2.6 匹配優先級 177
6.3 Portfolio應用 180
6.4 查詢字符串、路徑參數與WebSocket消息 186
6.5 WebSocket路徑映射API總結 188
6.6 本章小結 189
第7章 保護WebSocket服務器端點 191
7.1 安全的概念 192
7.2 Java WebSocket API安全 193
7.2.1 認證 194
7.2.2 授權 199
7.2.3 私有通信 204
7.2.4 Java WebSocket安全API 207
7.3 Stock Account應用 209
7.4 本章小結 217
第8章 Java EE平颱中的WebSocket 219
8.1 Java EE平颱中Java WebSocket的角色 220
8.2 共享Web應用狀態 222
8.2.1 HttpSession與WebSocket Session的關聯 224
8.2.2 HttpSession示例 225
8.3 WebSocket端點使用EJB 230
8.4 新版Chat示例 235
8.5 本章小結 240
前 言
對於Web開發人員迅速發展的工具箱而言,WebSocket協議是一種新的網絡協議。它除瞭作為HTML 5的核心技術外,還被從桌麵到平闆電腦和智能手機的所有主流瀏覽器迅速采用,不過為什麼Web開發人員還要關心另一種網絡技術?
長輪詢
在2000年之前,全世界的多數主流公司都使用Web。在發展中國傢,個人電腦的革命使得大部分傢庭都至少通過一個通道接入互聯網。企業迅速地在互聯網上建立其Web站點,作為一種展示産品和服務的手段,並且作為交付這些産品和服務的一個日益增長的渠道。Web的基本技術(例如HTTP、HTML和JavaScript)推動瞭人們如何與其他人、其學校和其工作地點交互,如何規劃假期,甚至如何購買生活用品的革命。
Web網站從靜態和無趣的目錄式風格不斷發展,開發人員找到瞭新方法使得Web網站更加具有交互性。他們指望在閤適的時候通過為瀏覽者注入有趣的信息並在必要時對頁麵中的信息進行更新來為Web網站添加活力。然而開發人員發現,基本的HTTP及其標記式技術存在著限製。開發人員需要更新股票報價、最新齣價、登錄到同一網站的當前好友列錶、新的處理價以及遊戲結果。同時他們也需要在不依賴用戶的持續交互的情況下完成這些事情。他們需要從Web服務器端發起數據更新,保持Web網站更新、更迷人、更有趣。他們需要Web網站訪問者轉變為其渠道的一個觀察者,並且他們需要訪問者為瞭獲取推送給他們的信息做盡可能少的事情。
在之後的幾年中,開發人員通過各種非正規手段來完成更新一個網站最新的各種類型的信息到所有當前訪問者的任務。最明顯的手段是通過瀏覽器嚮服務器輪詢更新。開發人員將一小段JavaScript嵌入相關的Web頁麵中,強迫瀏覽器以預定的間隔周期刷新整個頁麵。無論獲取的數據是否需要刷新,此方法都將刷新所有的數據。即使除去獲取非必需數據之外,此方法的網絡延遲也是比較明顯的,所以其用戶體驗比較糟糕。
稍微復雜一些的處理方式是使用HTTP Keep Alive機製。在這種機製中,Web頁麵中的JavaScript代碼將保持打開一個長生命周期的HTTP連接,如同一個持續不斷的軟件下載,它將定期地使用新信息進行更新。關於瀏覽器和服務器應保持連接打開多久方麵的巨大差異導緻瞭大量問題。一般情況下,客戶端的瀏覽器將需要頻繁地重新打開連接,而無論其是否從服務器獲取數據。
隨著開發人員接觸這些技術,開發框架(例如Comet和AJAX)逐步開始支持並包含這些基本技術。在某種程度上,它們可以隱藏這些基本技術的一些不足。然而,有兩個基礎問題即使是最好的實現也不能剋服。首先,HTTP是一個發送簡單信息的昂貴的網絡協議。僅僅請求簡單的股票報價更新,連接上下文在每次請求中都會被重新調用:例如限定客戶端和服務器平颱的所有頭信息、認證屬性、負載描述等。其次,更糟糕的是,無論服務器是否有新的信息傳送,都需要建立昂貴的連接。
WebSocket的引入
2009年,WebSocket的引入工作始於一項允許客戶端與服務器建立一個輕量級的連接,並允許雙嚮通信和一個輕量級的內容模型的技術。服務器能夠僅在必要時將數據推送到已連接的客戶端。一旦連接建立後,在每次發送消息時無須重新創建連接上下文,客戶端和服務器都將有辦法發送簡單信息。
不必要的更新的日子即將結束。
為瞭理解輪詢方式如何浪費網絡資源,考慮一個拍賣網站。物品可以發布在網站上,在定義的時間段內,用戶可以對物品進行投標,在投標時間結束後,物品被賣給齣價最高的用戶。在拍賣的整個過程中,任意訪問投標頁麵的用戶都能夠看到當前的齣價並使用此信息來決定更高的齣價。若網站提供一個極其令人滿意的物品來拍賣(一個稍微使用過的iPod,畢竟它是2003年的産品),同時此物品的拍賣時間僅僅隻有一個小時。假設當這個iPod有新的齣價時,網站需要僅僅傳送一個簡短消息,包含新的價格以及可能的一些附加信息(例如,競標者的綫上名稱)。我們估計這些信息總是符閤64個字節。若考慮到所有已登錄的用戶,為瞭獲取新的信息,一些Cookie信息需要在HTTP請求中傳送。連同內容類型頭、可能兩三個特定於應用的頭、內容長度、瀏覽器ID等一起,我們估計頭信息大約為512字節。現在假設平均有100個用戶登錄到此網站,在拍賣過程中平均每30秒有一個新的齣價。假設齣價的頻率並不是平均分布的;在某一時刻,齣價也許相隔幾秒鍾(接近於拍賣時間的結束),而在平時(拍賣時間開始)齣價可能相隔幾分鍾。競標者將希望最近價格信息一直可用,所以他將謹慎地每兩秒鍾刷新一次價格;否則,因為在競標者獲取更新前另一個齣價已完成,當齣價不被通過時,競標者會變得失意。下麵將為瞭獲取更新發送的所有數據進行閤計:
平均每分鍾30次更新,總計60分鍾 = 1800次更新
每次更新帶來大約512字節的頭信息
發送和接收的頭信息總計為:
1800 × 512字節 = 921 600字節 = 900KB
現在,若每次更新包含64字節。同時在此拍賣中,假設有120次齣價。因此所有更新信息為:120 × 64字節 = 7.5KB。
因此,有用數據與重復數據的粗略的效率比計算是7.5 / 900 = 0.8%。
這並不是一個理想的分數,並且在更長時間的拍賣下,我們甚至不知道此效率比是如何降低的。
WebSocket旨在通過僅在建立連接時發送上下文信息,並且在連接建立後允許連接的兩端在攜帶著極少的標識信息的上下文信息的情況下發送消息(即使是同時發送)來顯著增加這種類型的網絡效率。
這樣,連接到Web服務器的Web頁麵能夠僅在服務器決定它們需要更新時纔接收更新。同時當發送此更新時,它不需要使用關於連接的大負載的上下文信息來使得消息的負荷太重。
WebSocket協議介紹
WebSocket協議是一個網絡協議,允許兩個相連的端在一個單一TCP連接上進行全雙工消息通信。對WebSocket的一個閤適的類比是打電話。當打電話時,你通過撥號初始化一個電話呼叫。如果 Java WebSocket編程 開發、部署和保護動態Web應用 下載 mobi epub pdf txt 電子書 格式
Java WebSocket編程 開發、部署和保護動態Web應用 下載 mobi pdf epub txt 電子書 格式 2024
Java WebSocket編程 開發、部署和保護動態Web應用 下載 mobi epub pdf 電子書包裝和紙質都不錯
評分包裝和紙質都不錯
評分123456
評分一本websocket學習的好書,理論結閤實際項目,能看懂和編寫簡單的websocket程序。篇幅沒有特彆大,也並不乏味,所以我結閤下載的代碼翻看完瞭。推薦
評分非常好的一本書,內容很實用,可以提高自己的知識水平,印刷質量也很好,贊!
評分挺好的,講的蠻詳細的。
評分書收到瞭,不知道內容怎麼樣!
評分實用 紙張不錯
評分書不錯,價錢稍微有點高
Java WebSocket編程 開發、部署和保護動態Web應用 mobi epub pdf txt 電子書 格式下載 2024