-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Java WebSocket編程 開發、部署和保護動態Web應用

( 簡體 字)
作者:[美] Danny Coward 著類別:1. -> 程式設計 -> JAVA -> Java
譯者: 劉建 夏先波 譯
出版社:清華大學出版社Java WebSocket編程 開發、部署和保護動態Web應用 3dWoo書號: 42181
詢問書籍請說出此書號!

缺書
NT售價: 195

出版日:8/1/2015
頁數:241
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787302408079
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

前 言
對于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的一個合適的類比是打電話。當打電話時,你通過撥號初始化一個電話呼叫。如果你嘗試呼叫的人通過拿起話筒接受了呼叫,連接就已建立。當連接活躍時,如果樂意,雙方可以同時說話(雖然并不推薦此種自由交談),同時即使在說話時雙方也都可以聽到正在說些什么。這就是全雙工通信的含義所在。不管是否有人在講話,連接一直保持活躍,直到雙方中的一方決定掛斷電話。
在WebSocket的場景中,連接通過HTTP和WebSocket端點交互的方式建立。連接的發起者發送一個專門制定的HTTP請求,其中包含其希望連接的WebSocket端點的URL。它開始活動并被稱為打開階段握手。如果服務器愿意接受連接,服務器制定一個稱為打開階段握手響應的特殊的HTTP響應并將其發送回客戶端。此時,TCP連接可能已經建立,能夠保證WebSocket消息的往返傳遞。連接將一直保持活躍直到任意一方決定終止連接,或者是某些外部因素導致連接關閉(例如,非活躍期太長導致超時或者物理網絡的問題)。
盡管沒有任何特定的協議需要部署設置,WebSocket主要用來作為托管在Web服務器上的Web應用和瀏覽器客戶端之間的通信機制。同樣,WebSocket連接可以在網絡間的任意兩端建立,而不必是瀏覽器和Web服務器上。然而,由于技術的起源,WebSocket技術最直接的機會是為靜態Web站點帶來活力,并且能夠很容易地通過實時數據和活動來增強Web網站和Web應用。
在設置中,存在于瀏覽器中的WebSocket是使用已經被W3C標準化的稱為JavaScript WebSocket API的一個JavaScript API創建的。存在于托管在Web網站的Web服務器上的WebSocket可以通過多種語言來開發。WebSocket的普及如此突然,以至于多種不同語言和Web平臺都開始支持它。特別是,Java平臺已經快速建立了對WebSocket的支持。本書的主要關注點是探索這個新的Java API的基礎設施,盡管一些示例將依賴于那些使用JavaScript API來支持WebSocket的代碼。
Java Web Socket API是最近的Java EE 7平臺的核心特性,并且任何已經熟悉用其他Java技術或者基于Java的技術來構建Web應用(例如Java Servlet、JSP、JavaServer Faces或者與這些技術相關的任何其他技術)的Web程序員應該熟悉Java平臺中的WebSocket并且會考慮通過引入此技術為現有或者未來的應用帶來新鮮的和現代的感覺。通過本書,你將學習如何編寫WebSocket應用。還將學習Java WebSocket API的所有主要設施,包括WebSocket應用可用的配置選項和多種消息模式、可以在何處存儲應用狀態、如何配置WebSocket使得它僅可以被安全地訪問,以及如何將WebSocket集成到Java EE應用中。你在本書中每一章所學習的知識都將通過示例應用來演示。
本書共包含8章內容。
第1章:Java WebSocket基本原理
該章深入介紹了第一個WebSocket應用:Echo應用。雖然比較簡單,但是介紹了Java WebSocket API的主要特性,從而形成了本書中其他章節的基礎。
第2章:Java WebSocket生命周期
該章介紹了在WebSocket應用中創建的主要組件——WebSocket端點——的生命周期。此生命周期定義了一個框架,通過此框架可以管理WebSocket端點使用的資源,并且最重要的是定義了如何攔截WebSocket消息。此生命周期通過Lifecycle應用來舉例說明。此示例為用戶展示了一系列的交通信號燈,以便強調WebSocket端點生命期中的關鍵階段。
第3章:消息通信基礎
該章使用團體合作繪圖應用作為其示例應用,介紹了Web應用中發送和接收消息的基本方面。此示例使用Java應用作為客戶端,所以該章也同樣展示了Java WebSocket API作為客戶端的用法。
第4章:配置與Session
該章闡述了Java WebSocket API中的兩個最重要的對象:WebSocket會話對象和端點配置對象。其中前者表示一個和WebSocket對等端的會話,后者保存端點的配置信息。在一個在線聊天的示例應用中,我們使用這些對象說明其特性。
第5章:高級消息處理
該章詳細介紹了開發人員用于發送和接收WebSocket消息的所有可用選項。我們以第3章為基礎介紹了一些高級話題,例如消息編碼和解碼策略、同步和異步消息模式。該章中的示例應用使用一個用戶界面來闡明API中可用的消息選項。
第6章:WebSocket路徑映射
該章覆蓋了路徑映射的9條規則,講解了Java WebSocket API中將WebSocket端點發布到一個URI使得對等節點能夠連接上的所有可用選項。該章使用一個簡單的股票投資組合示例說明精確路徑匹配、模板映射、查詢字符串等技術,并且討論了你可能選擇某種技術而非另一種技術的各種情況。

第7章:保護WebSocket服務器端點
該章介紹了如何將對WebSocket端點的訪問限制為僅是Web應用的某種用戶,還介紹了如何確保WebSocket端點間的通信保持為私有。我們回顧了股票投資組合應用,使用安全技術來保護此應用并且使之個性化。
第8章:Java EE平臺中的WebSocket
該章首先介紹如何將WebSocket端點集成到大規模的Java EE應用中。該章改進了第4章中的聊天應用,從而利用Java EE平臺中的兩個關鍵組件:Java Servlet和EJB,提供了一些在WebSocket端點和其他Java Web組件之間,以及和企業JavaBean間共享應用信息的方法。
目標讀者對象
本書適合于如下讀者:
希望為Web應用增加交互特性的Web開發人員
希望和WebSocket服務器應用交互的富客戶端應用開發人員
有興趣為支持HTML5的瀏覽器開發應用的Java EE開發人員
本書假設你具備一些Java編程語言的運用知識、一些Java SE平臺的經驗和一些JavaScript編程語言的知識。此外,盡管不是必要的,但具備一些Web應用的開發經驗可能是有用的。
獲取示例應用
所有的示例應用代碼都可以從Oracle Press網站www. OraclePressBooks.com下載。文件包含在一個壓縮文件中。一旦下載了此壓縮文件,就需要解壓其內容。示例運行于Glassfish 4.0應用服務器上。Glassfish 4.0可以從http://glassfish.java.net/免費下載,并且可以使用NetBeans IDE進行構建。NetBeans IDE可以從http://netbeans.org/免費下載。
我希望本書能夠激發你使用前所未有的想法來編寫應用!

內容簡介:

精通Java WebSocket應用開發
充分利用最先進的通信技術構建動態企業級Web應用。《Java WebSocket編程 開發、部署和保護動態Web應用》一書由Java WebSocket編程權威專家撰寫,提供了實際的開發策略和詳盡的示例應用。本書詮釋了如何設計客戶端/服務器應用、與全雙工消息通信協作、建立連接、創建端點、處理路徑映射以及保護數據。你也將學到如何加密Web傳輸并且使用Java WebSocket增強既有應用。
主要內容
● 使用Java WebSocket API開發Web應用
● 創建和發布注解式端點和編程式端點
● 管理WebSocket端點的生命周期事件
● 維護端點生命周期中可靠的連接
● 管理同步和異步消息通信
● 為復雜消息通信定義編碼和解碼策略
● 配置消息通信超時、大小限制和異常
● 消息路徑映射及將入站URI路由到Web容器
● 保護數據、認證用戶以及加密連接
目錄:

目    錄

第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

序: