前言  時(shí)至今日,用戶期待的是可通過(guò)web訪問(wèn)快速、動(dòng)態(tài)的應(yīng)用。這一文章系列展示了如何使用反向Ajax(Reverse Ajax)技術(shù)來(lái)開(kāi)發(fā)事件驅(qū)動(dòng)的web應(yīng)用。系 " /> 性美国人xxxxx18,亚洲精品视频免费看,九九热在线观看视频

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

反向Ajax,第3部分:Web服務(wù)器和Socket.IO

  英文原文:Reverse Ajax, Part 3: Web servers and Socket.IO
  前言

  時(shí)至今日,用戶期待的是可通過(guò)web訪問(wèn)快速、動(dòng)態(tài)的應(yīng)用。這一文章系列展示了如何使用反向Ajax(Reverse Ajax)技術(shù)來(lái)開(kāi)發(fā)事件驅(qū)動(dòng)的web應(yīng)用。系列的第1部分介紹了反向Ajax、輪詢(polling)、流(streaming)、Comet和長(zhǎng)輪詢(long polling)。你已經(jīng)了解了Comet是如何使用HTTP長(zhǎng)輪詢的,這是可靠地實(shí)現(xiàn)反向Ajax的最好方式,因?yàn)楝F(xiàn)有的所有瀏覽器都提供支持。系列的第2部分說(shuō)明了如何使用WebSocket來(lái)實(shí)現(xiàn)反向Ajax,一些代碼例子被用來(lái)幫助說(shuō)明WebSocket、FlashSocket、服務(wù)器端的約束、請(qǐng)求作用域(request-scoped)服務(wù)以及暫停長(zhǎng)生存期請(qǐng)求等。

  在本篇文章中,我們深入細(xì)節(jié),討論在web應(yīng)用中使用不同web容器和API(Servlet 3.0和Jetty Continuations)的Comet和WebSocket,了解如何通過(guò)使用諸如Socket.IO一類(lèi)的抽象庫(kù)來(lái)透明地使用Comet和Websocket。Socket.IO使用功能檢測(cè)來(lái)確定連接是使用WebSocket、Ajax長(zhǎng)輪詢、Flash還是其他方式來(lái)建立。

  前提條件

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

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

  Comet和WebSocket的服務(wù)器端解決方案

  你在第1部分內(nèi)容中已經(jīng)了解到了,Comet(長(zhǎng)輪詢或是流)需要服務(wù)器端能夠暫停某個(gè)請(qǐng)求,并在一個(gè)可能的長(zhǎng)延遲之后恢復(fù)或是完成該請(qǐng)求。第2部分內(nèi)容描述了服務(wù)器端如何使用非阻塞式的I/O功能來(lái)處理大量的連接,以及它們只能使用線程來(lái)服務(wù)請(qǐng)求(每個(gè)請(qǐng)求一個(gè)線程模式)。你也已經(jīng)了解到了WebSocket的使用是服務(wù)器端依賴的,且并非所有的服務(wù)器都支持WebSocket。

  本節(jié)內(nèi)容說(shuō)明了如果適用的話,那么在Jetty、Tomcat和Grizzly等web服務(wù)器上是如何使用Comet和WebSocket的。本文提供的源代碼包含了Jetty和Tomcat的一個(gè)聊天web應(yīng)用例子。本節(jié)內(nèi)容還討論了下面的這些應(yīng)用服務(wù)器:Jboss、Glassfish和WebSphere所支持的API。

  Jetty

  Jetty是一個(gè)web服務(wù)器,支持Java Servlet 3.0規(guī)范、WebSocket和其他的許多集成規(guī)范。Jetty:

  1. 功能強(qiáng)大且靈活

  2. 易于嵌入

  3. 支持虛擬主機(jī)、會(huì)話集群和許多可很容易地通過(guò)用于Google App Engine的托管服務(wù)的Java代碼或是XML來(lái)配置的功能。

  核心的Jetty項(xiàng)目由Eclipse Foundation打理。

  從版本6開(kāi)始,Jetty加入了一個(gè)被稱(chēng)作Jetty Continuation(Jetty延續(xù))的異步API,該API允許請(qǐng)求被暫停并在之后被恢復(fù)。表1給出了所支持的規(guī)范和Jetty的主要版本系列的API之間的一個(gè)對(duì)照關(guān)系。

  表1. Jetty的版本和支持

SupportsJetty 6Jetty 7Jetty 8
Non-blocking I/OXXX
Servlet 2.5XXX
Servlet 3.0 XX
Jetty Continuations (Comet)XXX
WebSockets XX

  若要實(shí)現(xiàn)使用Comet的反向Ajax的話,你可以使用Jetty的Continuation API,如清單1所示:

  清單1. 用于Comet的Jetty Continuation API

// 暫停一個(gè)來(lái)自servlet方法(get、post......)的請(qǐng)求:
protected
void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Continuation continuation
= ContinuationSupport.getContinuation(req);
// 可選的做法,設(shè)置超時(shí)以避免請(qǐng)求掛起過(guò)久
continuation.setTimeout(0);
// 掛起請(qǐng)求
continuation.suspend();
// 保存引用,以備將來(lái)另一線程使用
continuations.offer(continuation);
}
// 然后,來(lái)自另一個(gè)想給客戶發(fā)送事件的線程:
while (!continuations.isEmpty()) {
Continuation continuation
= continuations.poll();
HttpServletResponse response
=
(HttpServletResponse) continuation.getServletResponse();
// 向響應(yīng)中寫(xiě)入
continuation.complete();
}

it知識(shí)庫(kù)反向Ajax,第3部分:Web服務(wù)器和Socket.IO,轉(zhuǎn)載需保留來(lái)源!

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

主站蜘蛛池模板: 女人麻豆国产香蕉久久精品 | 在线观看国产人视频免费中国 | 国产极品美女视频福利 | 免费欧美大片 | 双性大乳浪受噗呲噗呲h总 双性被疯狂灌满精NP | 亚洲精品在线网址 | 久久久无码精品亚洲日韩按摩 | 九九热这里只有国产精品 | 精品国产福利一区二区在线 | 花蝴蝶免费版高清版 | 男人的天堂黄色片 | 国产日韩亚洲专区无码 | 在线亚洲97se | YELLOW在线观看高清视频免费 | 国拍自产精品福利区 | 国产香蕉九九久久精品免费 | 国产专区青青在线视频 | 簧片在线免费观看 | 男人脱女人衣服吃奶视频 | 亚洲精品视频免费在线观看 | 国产亚洲精品97在线视频一 | 无码精品AV久久久奶水 | 欧美性猛交XXXX乱大交极品 | 大地影院在线播放 | 亚洲美女视频高清在线看 | 丰满的女朋友 在线播放 | 免费韩伦影院在线观看 | 亚洲免费黄色片 | 一区二区三区内射美女毛片 | 男插女高潮一区二区 | 久久99国产精品蜜臀AV | 黄网13区| 区产品乱码芒果精品P站在线 | 国产无线乱码一区二三区 | 手机看片国产日韩欧美 | 日本乱子人伦在线视频 | 日韩亚洲视频一区二区三区 | 国产成人免费观看在线视频 | 秋葵app秋葵官网18在线观看 | 日本久久精品视频 | 久久精品成人免费网站 |