`
wbj0110
  • 浏览: 1571096 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Atmosphere 1.0:支持Java/JavaScript的异步通信框架

阅读更多

Atmosphere 1.0是一个新的Java/Scala/Groovy框架,它试图将Web浏览器与应用服务器之间的通信抽象出来。在Web Socket、HTML5服务器端事件和其他特定于应用服务器的解决方案可用时,该框架可以透明地支持,此外还可将长轮询作为一种备选方案。

最初,Web应用程序是采用客户端/服务器模型构建的,始终由客户端向服务器发起连接。对于特定类型的应用,如仪表板(Dashboard)、报价器和在线聊天等,它们都需要实时通信功能,而传统的HTTP请求/响应循环无法满足其要求。在这些情况下,服务器必须能够以异步方式(当事件可用时)向客户端(Web浏览器)推送数据。

随着基于AJAX 的富互联网应用(rich internet applications,RIA)的出现,这种需求变得尤为明显。RIA不再刷新整个页面,而是采用了一种更为动态的方法,当应用服务器上有新数据可用时,仅更新页面的某些部分。最基本的解决方案是使用轮询:客户端连续不断地向服务器询问更新信息(可能基于一定的时间间隔)。这种方法非常简单,不需要特殊的支持,但是可能存在带宽方面的问题。而且如果有很多客户端的话,即使没有新数据可用,服务器也很容易就不堪重负了。

异步通信的另一种实现方式是HTTP流(也称Comet)。这种方案强制浏览器连接到服务器,而且在指定时间(也可以不限制时间)内保持连接。当服务器有事件需要推送到浏览器时,就可以使用这一持久连接。该方案也有些限制。持久连接是资源密集型的,可能被代理和防火墙意外关闭,而且浏览器对连接到每个应用服务器的连接数也有限制。

以上方法都不是标准的解决方案。本质上,Comet是一个宽泛的术语,包含了遵循上述理念的一些实现。目前已经有些努力致力于WebSocket的标准化。WebSocket是一种新的网络协议,它从一开始就是为支持异步通信而设计的。然而该协议需要Web浏览器和应用服务器双方提供显式地支持。只要双方都支持WebSocket,就可以将HTTP连接“升级”为web socket。针对WebSocket的编程也有其自身的问题,因为当前每种应用服务器都有自己的API,这很容易导致供应商的封闭。

Atmosphere是一个Java框架(也支持GroovyScala),可以作为以上各种方案之上的一个抽象层,使开发者无需处理底层的通信细节,从而将精力集中在实际的业务逻辑上。开发者只需利用统一的Atmosphere API编程即可,由该API在背后提供对以下各场景的支持:

同时,Atmosphere也提供了一个JavaScript模块(支持jQuery),该模块位于客户端,负责将Web浏览器的异步支持功能抽象出来。这种抽象的核心理念是控制连接的两端。详细文档参见:支持的应用服务器和浏览器(supported application servers and browsers)。

Atmosphere的主要特性是在可行的情况下(比如可以使用WebSocket),能够自动选择最高效的方案,还支持一种备选方案(比如长轮询)。它也有可能提前发现客户端和服务器之间支持的方式。请注意:使用Nettosphere时,Atmosphere可以运行在 非servlet的容器中。

除基本API之外,Atmosphere也提供了一些插件或扩充,能够与以下框架集成:

  • REST/Jersey
  • GWT/Vaadin
  • Socket.io
  • Spring
  • Guice
  • Wicket
  • PrimeFaces/RichFaces

更多信息,请访问该项目的Wiki示例FAQJavadocs

作者Kostis Kapelonis是软件工程师,专注于企业级应用开发。

查看英文原文Atmosphere 1.0: Asynchronous Communication For Java/JavaScript

分享到:
评论

相关推荐

    worldwind 鹰眼插件Globe Icon

    // Based on the Compass plugin, itself based on Bjorn Reppen 'Atmosphere' plugin // 0.6 Jan 20, 2007 Add setting to remember on/off status and fix ./, issue // 0.5 Nov 7, 2006 WW 1.4 : fixed device....

    websocket java 实现例子

    WebSocket是Web交互技术的一种,它允许服务器和客户端之间进行全双工通信,即双方可以同时发送数据,极大地提升...此外,还可以考虑使用WebSocket库,如Jetty的WebSocket API或Atmosphere框架,以简化开发和增强功能。

    ARCropolis:Super Smash Bros.Ultimate正在进行的文件替换插件

    ARCropolis 一个Skyline插件,用于用任意大小的文件替换Smash Ultimate中的任意文件。 由Raytwo和jam1garner等分制成,在Shadow的帮助... sd:/atmosphere/contents/01006A800016E000/romfs/arc/ui/message/msg_melee.

    atmosphere-[removed]气氛-javascript

    大多数要么支持Atmosphere,要么由框架本身提供支持。 Atmosphere Framework支持所有主要的 在关注我们或在获取最新消息 Atmosphere透明地支持WebSocket,服务器发送事件(SSE),长轮询,HTTP流(永远帧)和JSONP...

    COAWST_User_Manual.doc

    COAWST(Coupled-Ocean-Atmosphere-Wave-Sediment Transport)模型系统是一个集成的开源组件集合,专门设计用于研究沿海海洋中的大气、海洋和波浪相互作用过程。该系统包含以下核心部分: 1. **耦合器**:Model ...

    流星webpack:https://medium.com@ardatanmeteor-with-webpack-in-2018-faster-compilation-better-source-handling-benefit-from-bc5ccc5735ef

    流星Webpack 博客文章: : Meteor-Webpack为您提供了一个集成了现代Web捆绑程序Webpack和现代完美的全栈JavaScript框架Meteor的开发环境。 您只需要一个气氛包就可以开始。 ardatan:webpack 该项目包括一些具有流行...

    基于websocket的聊天室.zip

    此外,还可以考虑使用WebSocket库,如Java的Jetty或Atmosphere,JavaScript的Socket.IO,以获取更丰富的功能和更好的兼容性。 这个"基于WebSocket的聊天室"项目涵盖了网络通信基础、WebSocket协议应用、Java后端...

    (Sen2Cor说明书)S2-PDGS-MPC-L2A-SRN-V2.8.pdf

    * V2.2.1:添加了automated ozone determination和automated aerosol / atmosphere detection功能。 * V2.3.0:添加了PSD 14.2支持,提高了影像处理速度。 * V2.3.1:修复了一些已知的问题,添加了planned ...

    大气压力单位转换:一个简单的工具,可以集成到需要压​​力转换的较长脚本中-matlab开发

    2) Torr:1毫米汞柱施加的流体压力(133.322667519932 Nm^-2 或 133.322667519932 Pa) 来源: http : //en.wikipedia.org/wiki/Pressure 和: http : //en.wikipedia.org/wiki/Technical_atmosphere 撰写时间:2012 ...

    atmosphere-runtime-0.6.3.jar.zip

    "atmosphere-runtime-0.6.3.jar"文件是这个库的可执行Java档案,包含了运行Atmosphere框架所需的所有类和资源。开发者可以将其添加到Java项目的类路径中,以利用Atmosphere的功能。压缩包中还包含了一个"license.txt...

    atmosphere-chat-multiroom-2.1.3.zip

    Atmosphere是一款强大的JavaScript库和服务器端框架,用于实现WebSocket、Server-Sent Events (SSE) 和长轮询等实时通信技术。这个版本为2.1.3,意味着它可能包含了优化和修复了前一版本中的问题,以提供更稳定的...

    一个用于下载和使用您自己的minecraft皮肤在游戏中使用的mod,只需输入您的用户名!-Rust开发

    一个用于下载和使用您自己的minecraft皮肤在游戏中使用的mod,只... ... ... 将皮肤以PNG格式扔到以下目录中:sd:/ atmosphere / contents / 01006A800016E000 / romfs / minecraft_skins注意:需要天际线和arcropolis 0.9.0

    camera filter pack v4.1.0

    Work with Unity 5 and Unity 4.x Pro Watch the video demonstration NEW!...Discuss with us about Camera Filter Pack and more ! Camera Filter Pack : More Than 310 ...– Add Atmosphere Fog – Add Pixelisat

    atmosphere-applet-comet.jar.zip

    1. **Atmosphere框架**:Atmosphere是一款开源的Java库,旨在解决在Web浏览器与服务器之间进行长连接通信的问题。它支持WebSocket、Server-Sent Events(SSE)等多种实时通信协议,同时兼容各种Web容器,如Tomcat、...

    javax.websocket-api-1.0.jar.zip

    总结一下,`javax.websocket-api-1.0.jar`是Java WebSocket API的实现,提供了一套完整的框架,帮助开发者在Java EE环境中创建WebSocket服务。通过这个库,你可以实现服务器端的WebSocket端点,处理客户端的连接、...

    SimpleModManager:SimpleModManager是Nintendo Switch的自制应用程序

    SimpleModManager SimpleModManager是Nintendo Switch CFW:Atmosphere的自制应用程序。 它允许管理您的mod(通过LayeredFS)。用法将.nro文件放置在SD卡的/switch/文件夹中。 在SD卡的根目录下,创建一个/mods/...

    nettosphere:基于Atmosphere和Netty框架的Java WebSocketHTTP服务器

    Nettosphere:由和提供支持的Java WebSocket和HTTP服务器 开始使用NettoSphere的最简单方法是下载示例并启动它。 。 您可以下载我们的分发之一。 % unzip nettosphere- < name> -distribution.jar % chmod a+x ./...

    jfinalpluginsjfinal-dreampie.zip

    4.akka异步执行框架 public class AkkaPlugin implements IPlugin Akka.system().scheduler().scheduleOnce(Duration.create(1000, TimeUnit.MILLISECONDS),  new Runnable() {  @Override  ...

    worldwind 全球云图插件

    ased on the Stars plugin, itself based on Bjorn Reppen 'Atmosphere' plugin // Latest cloud map comes from a random server listed at http://xplanet.sourceforge.net/clouds.php // and is mirrored at ...

    基于layim的web聊天系统,采用Java技术 WebSocket+mysql,利用spring mvc框架.zip

    这是一个基于LayIM的Web聊天系统的实现,使用了Java技术栈,包括WebSocket协议进行实时通信,MySQL数据库存储数据,并利用Spring MVC框架构建后端逻辑。下面将详细解析这个项目涉及的技术点。 首先,LayIM是一款由...

Global site tag (gtag.js) - Google Analytics