一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

反向Ajax,第4部分:Atmosphere和CometD

  英文原文:Reverse Ajax, Part 4: Atmosphere and CometD

  前言

  這一系列文章展示了如何使用反向Ajax技術(shù)開發(fā)事件驅(qū)動(dòng)的web應(yīng)用第1部分內(nèi)容介紹了反向Ajax(Reverse Ajax)、polling(輪詢)、streaming(流)、Comet和長輪詢(long polling);第2部分內(nèi)容介紹了如何使用WebSocket來實(shí)現(xiàn)反向Ajax,并討論了使用Comet和WebSocket的web服務(wù)器的局限性;第3部分內(nèi)容說明的是,如果需要支持多種服務(wù)器或是為用戶提供一個(gè)部署在他們自己的服務(wù)器上的獨(dú)立web應(yīng)用的話,實(shí)現(xiàn)自己的Comet或是WebSocket通信系統(tǒng)會(huì)存在一些難處。即使客戶端的JavaScript代碼很簡單,但你需要用到一些異常處理、重連接和確認(rèn)功能。在服務(wù)器端,全局性API的缺失和多種web服務(wù)器API導(dǎo)致了對(duì)框架的需求,這帶來了一層抽象,第3部分內(nèi)容還談到了Socket.IO。

  在本文中,我們了解Atmosphere和CometD,它們是最廣為人知的Java服務(wù)器開源反向Ajax庫。

  你可以下載本文中使用的源代碼。

  前提條件

  理想情況下,要充分體會(huì)本文的話,你應(yīng)該對(duì)JavaScrpit和Java有一定的了解。若要運(yùn)行本文中的例子,你還需要最新版本的Maven和JDK。

  Atmosphere框架

  Atmosphere是一個(gè)Java技術(shù)框架,其提供了通用的API來使用許多web服務(wù)器的Comet和WebSocket,這些web服務(wù)器包括了Tomcat、Jetty、GlassFish、Weblogic、Grizzly、JBossWeb、JBoss和Resin,其還支持任何支持Servlet 3.0規(guī)范的web服務(wù)器。在本系列文章提到的各個(gè)框架中,Atmosphere支持的服務(wù)器最多。

  Atmosphere可以檢測(cè)本地化的服務(wù)器端API(針對(duì)Comet和WebSocket),對(duì)于Comet來說,如果可用的話,就切換回Servlet3.0;或者,依然是針對(duì)Comet,其會(huì)回退到一種“受管”的異步模式中(但沒有達(dá)到Jetty Continuation的那種可伸縮性)。Atmosphere的存在已經(jīng)超過了兩年的時(shí)間,現(xiàn)在依然在處在活躍的發(fā)展階段。其被用在大型的web應(yīng)用中,比如說JIRA,這是一個(gè)最有名的問題追蹤器。圖1給出了Atmosphere的架構(gòu)。

  圖1. Atmosphere的架構(gòu)一覽

  Atmosphere由Atmosphere運(yùn)行時(shí)組成,其為所有不同的web服務(wù)器解決方案和標(biāo)準(zhǔn)提供了一個(gè)通用的API。在這之上,客戶端可以設(shè)置一個(gè)簡單的servlet來通過Google Web Toolkit(GWT)訪問該API和反向Ajax功能。或者,你也可以使用Jersey,一個(gè)實(shí)現(xiàn)了JSR-311(JAX-RS規(guī)范)的框架。有了所提供的額外注解,因此Atmosphere可用在RESTful服務(wù)中。在配置了所選擇的模塊后,你就可以通過實(shí)現(xiàn)一些類來訪問Atomsphere運(yùn)行時(shí)(本文稍后會(huì)討論到)。你還可以選擇使用一些提供的插件,這些插件增加了對(duì)集群、消息、依賴注入等的支持。如果你正在使用一個(gè)web框架(Wecket、Struts、Spring MVC)的話,則可以使用Atmosphere的MeteorServlet來透明地添加反向Ajax支持。這一Servlet暴露出一個(gè)Meteor對(duì)象,該對(duì)象可在你的控制器內(nèi)部檢索到,用來掛起或是恢復(fù)請(qǐng)求。

  Atmosphere的強(qiáng)大停留在服務(wù)器端:其提供一個(gè)了標(biāo)準(zhǔn)的API,該API覆蓋了所有與WebSocket或是Comet通信的不同解決方案和方法。Atmosphere并未用到客戶端和服務(wù)器端之間的協(xié)議,比如說Socket.IO和CometD等,這兩種庫都提供了一個(gè)客戶端的JavaScript和一個(gè)服務(wù)器端的servlet,它們的通信用到了一種特定的協(xié)議(握手、消息、確認(rèn)和心跳)。Atmosphere的目標(biāo)是在服務(wù)器端提供一種通用的通信信道。如果你需要用到某種特定協(xié)議的話,比如說Bayeux(CometD用到的一個(gè)協(xié)議),就需要在Atmosphere中開發(fā)自己的“處理程序”。CometD插件就是這樣做的:其利用了Atmosphere的API來掛起和恢復(fù)請(qǐng)求,并委托CometD的類來管理使用了Bayeux協(xié)議的CometD通信。

  Atmosphere所帶的JQuery客戶端庫方便了連接的建立,其能夠自動(dòng)檢測(cè)最好的可用傳輸方式(WebSocket或是CometD)。Atmosphere的jQuery插件的用法類似于HTML5 WebSocket API,首先你連接到服務(wù)器端,注冊(cè)一個(gè)回調(diào)來接收信息,然后就可以推一些數(shù)據(jù)了。

  本文中的源代碼包含了一個(gè)Atmosphere例子,該類直接用到了一個(gè)使用Atmosphere servlet的處理程序。客戶端的代碼則始終是相同的;與本系列的第1、2和3部分用戶的代碼一樣(使用Comet長輪詢的聊天例子)。你有可能使用了Atmosphere的JQuery插件,但這不是必須的,因?yàn)锳tmosphere并不強(qiáng)制使用任何的通信協(xié)議。強(qiáng)烈建議你研究一下Atmosphere項(xiàng)目中的其他例子,特別是用到了JSR-311注解(Jersey)的那些,它們真正地簡化了處理程序的編寫。

  清單1. AtmosphereHandler接口

public interface AtmosphereHandler {
  void onRequest(AtmosphereResource resource)
  throws IOException;
  void onStateChange(AtmosphereResourceEvent event)
  throws IOException;
  void destroy();
}

it知識(shí)庫反向Ajax,第4部分:Atmosphere和CometD,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 国产精品麻豆一区二区三区 | 伊人狼人综合 | 久久国产影视免费精品 | 免费国产成高清人在线视频 | 成人在线亚洲 | 成年人免费在线视频网站 | 国产福利免费在线观看 | 国产精品久久久久影院色老大 | 久久综合偷偷噜噜噜色 | 国产精品成人观看视频国产 | 国产男女视频 | 99久久伊人一区二区yy5o99 | 欧美综合色区 | 亚洲图片欧美文学小说激情 | 91免费视频版| 亚洲另类图片专区 | 看成年全黄大色黄大片 | 成人久久网站 | 日本高清www视频在线观看 | 欧美在线视频在线观看 | 亚洲综合色就色手机在线观看 | 最新国产成人综合在线观看 | 久久精品免视着国产成人 | 亚洲人成小说 | www狠狠干| 亚洲区小说区图片区qvod | 亚洲网站在线播放 | 国产精品视频一区二区三区经 | 久久综合狠狠综合狠狠 | 国产在线精品一区二区三区 | 国产91精品一区二区 | 久久亚洲国产成人亚 | 国产精品色婷婷在线观看 | 91精品国产色综合久久不卡蜜 | 亚洲黄色高清视频 | 一级做a爰片性色毛片武则天五则 | 精品日韩一区二区 | 久在线观看| 国产成+人+综合+亚洲不卡 | 图片区小说欧洲区 | 久99久精品免费视频热77 |