色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

反向Ajax,第2部分:WebSocket

  英文原文:Reverse Ajax, Part 2: WebSockets

這一文章系列探討了如何使用反向Ajax(Reverse Ajax)技術(shù)來開發(fā)事件驅(qū)動的web應(yīng)用,第1部分內(nèi)容介紹了實現(xiàn)反向Ajax通信的幾種不同方式:輪詢(polling)、捎帶(piggyback)以及使用了長輪詢(long-polling)和流(streaming)的Comet。在本文中,我們學(xué)習(xí)一種新的實現(xiàn)反向Ajax的技術(shù):使用WebSocket,一個新的HTML5 API。WebSocket可由瀏覽器廠商來做本地化實現(xiàn),或是通過把調(diào)用委托給隱藏的被稱為FlashSocket的Flash組件這種橋接手段來實現(xiàn)。本文還討論了反向Ajax技術(shù)帶來的一些服務(wù)器端約束。

  前言

  時至今日,用戶期待的是可通過web訪問快速、動態(tài)的應(yīng)用。這一文章系列展示了如何使用反向Ajax(Reverse Ajax)技術(shù)來開發(fā)事件驅(qū)動的web應(yīng)用。該系列的第1部分介紹了反向Ajax、輪詢(polling)、流(streaming)、Comet和長輪詢(long polling)。你已經(jīng)了解了Comet是如何使用HTTP長輪詢的,這是可靠地實現(xiàn)反向Ajax的最好方式,因為現(xiàn)有的所有瀏覽器都提供支持。

  在本文中,我們將學(xué)習(xí)如何使用WebSocket來實現(xiàn)反向Ajax。代碼例子被用來幫助說明WebSocket、FlashSocket、服務(wù)器端約束、請求作用域(request-scoped)服務(wù)以及暫停長生存期請求等,你可以下載本文中用到的這些源代碼。

  前提條件

  理想情況下,要充分體會本文的話,你應(yīng)該對JavaScrpit和Java有一定的了解。本文中創(chuàng)建的例子是使用Google Guice來構(gòu)建的,這是一個使用Java編寫的依賴注入框架。若要讀懂文中所談內(nèi)容,你應(yīng)該要熟悉諸如Guice、Spring或是Pico一類的依賴注入框架的概念。

  若要運行本文中的例子,你還需要最新版本的Maven和JDK(參見參考資料)。

  WebSocket

  在HTML5中出現(xiàn)的WebSocket是一種比Comet還要新的反向Ajax技術(shù),WebSocket啟用了雙向的全雙工通信信道,許多瀏覽器(Firefox、Google Chrome和Safari)都已對此做了支持。連接是通過一個被稱為WebSocket握手的HTTP請求打開的,其用到了一些特殊的報頭。連接會保持在活動狀態(tài),你可以使用JavaScript來寫入和接收數(shù)據(jù),就像是在使用一個原始的TCP套接口一樣。

  WebSocket URL的起始輸入是ws://或是wss://(在SSL上)。

  圖1中的時間線說明了使用WebSocket的通信。一個帶有特定報頭的HTTP握手被發(fā)送到了服務(wù)器端,接著在服務(wù)器端或是客戶端就可以通過JavaScript來使用某種套接口(socket)了,這一套接口可被用來通過事件句柄異步地接收數(shù)據(jù)。

  圖1. 使用WebSocket的反向Ajax

  本文可下載的源代碼中有一個WebSocket例子,在運行該例子時,你應(yīng)該會看到類似清單1的輸出。其說明了客戶端的事件是如何發(fā)生的,以及如何會立即在客戶端顯示出來。當客戶端發(fā)送一些數(shù)據(jù)時,服務(wù)器端回應(yīng)客戶端的發(fā)送行為。

  清單1. JavaScript中的WebSocket例子

[client] WebSocket connection opened
[server] 1 events
[event] ClientID =0
[server] 1 events
[event] At Fri Jun 1721:12:01 EDT 2011
[server] 1 events
[event] From 0 : qqq
[server] 1 events
[event] At Fri Jun 1721:12:05 EDT 2011
[server] 1 events
[event] From 0 : vv

it知識庫反向Ajax,第2部分:WebSocket,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 武清区| 攀枝花市| 镇平县| 平潭县| 英吉沙县| 丰台区| 策勒县| 抚远县| 邯郸县| 临城县| 阜康市| 呼伦贝尔市| 华宁县| 介休市| 伽师县| 长寿区| 夏津县| 湾仔区| 龙州县| 河北区| 布尔津县| 利津县| 绥化市| 广宗县| 灵川县| 桃园县| 临安市| 嘉定区| 富裕县| 调兵山市| 沅江市| 广州市| 象州县| 云和县| 兴城市| 石阡县| 三明市| 永平县| 南昌县| 托里县| 醴陵市|