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

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

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

  前言

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

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

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

  前提條件

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

  Atmosphere框架

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

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

  圖1. Atmosphere的架構一覽

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

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

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

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

  清單1. AtmosphereHandler接口

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

it知識庫反向Ajax,第4部分:Atmosphere和CometD,轉載需保留來源!

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

主站蜘蛛池模板: 99精品视频一区在线视频免费观看 | 色综合伊人色综合网站下载 | 我的好妈妈8高清在线观看WWW | 免费国产成人手机在线观看 | 亚洲qvod图片区电影 | 青春草国产成人精品久久 | 99er热精品视频国产免费 | 欧美日本高清动作片www网站 | 肉伦禁忌小说np | A片毛片免费视频在线看 | 极品网红液液酱粉嫩福利照子凌酱 | 国产精人妻无码一区麻豆 | 午夜免费福利小电影 | 高傲教师麻麻被同学调教123 | 冈本视频黄页正版 | 国产精品私人玩物在线观看 | 99精品视频在线观看免费 | ai换脸女明星被躁在线观看免费 | 少女free大陆 | 国产精品第八页 | 国产成人精品自拍 | 国内精自品线一区91 | 教室眠催白丝美女校花 | 一区两区三不卡 | 果冻传媒视频在线播放 免费观看 | 97在线精品视频 | 国产精品成人无码久免费 | 爆操日本美女 | 最近中文字幕MV高清在线视频 | 欧美日韩高清一区 | 中文字AV字幕在线观看 | 欧美精品成人久久网站 | 亚洲精品久久久一区 | 牲高潮99爽久久久久777 | 麻豆AV无码蜜臀AV色哟 | 2017欧美狠狠色| 国产精品久久人妻拍拍水牛影视 | 久久精视频| 草草久久久无码国产专区全集观看 | 野花香在线观看免费高清播放视频 | 一本道久久综合久久88 |