ajax - 它在 GWT 中调用了什么来使 2 个 UI 保持一致?

标签 ajax gwt comet

我观看了 Google I/O 的视频,发现了一个 GWT UI 在客户端之间非常一致的示例。您可以在客户端之间几乎实时地保存、添加、拖放。我目前不明白这个的基本原理(在 GWT 中,我认为它实现了 Comet),所以有人可以给我一个术语或定义吗?这样我就可以在 Google 上获取更多信息?

非常感谢

最佳答案

好的,我认为您正在寻找的内容以 Comet, Server Push, Reverse Ajax 的名称为人所知。 (仅举几例 - 它们的含义都相同,在对此主题进行研究时可能会有所帮助)。简而言之,它描述了服务器发起与客户端的连接时的模型/情况(通常,反之亦然)。当然,由于这是客户端,它实际上并不是在监听连接,而是使用一些技巧使其看起来如此 - 例如长轮询(尝试尽可能长时间地保持与服务器的连接打开,等待服务器有新的数据发送给客户端。在最大连接时间之后,客户端立即重新连接,如此)。这是一项非常酷的功能,如果使用得当,可以真正改善用户体验。

至于这个概念的实现:

  • rocket-gwtRemoting module为了它
  • cometd是一位受欢迎且经验丰富的竞争对手;)
  • Ajax Push Engine是一个相对较新的补充 - 他们设计了自己的服务器(用 C 编写得很好),这可能会或可能不会提供比其他解决方案更好的性能,缺点是服务器端可能更难实现(用 C 或服务器编写模块)通过 SpiderMonkey 端 JavaScript)。 注意:APE服务器只能在 Linux、BSD 或 Mac OS X 上运行。
  • NGiNX_HTTP_Push_Module - 我最喜欢的,因为他们的协议(protocol)是最简单/最干净的,他们使用 nginx,这意味着不需要运行额外的服务器(并且不需要 Java 服务器 - 对于像我这样不在服务器端使用 Java 的人很有用)。该协议(protocol)非常简单,纯 GWT 实现应该很容易编写(事实上,这就是我正在做的事情)。

根据您的服务器端,您有很多选择 - cometd 是一个可靠的解决方案,但他们使用的 Bayeux 协议(protocol)是一个小噩梦,TBH。几个月前我尝试过APE(Ajax Push Engine),但当时他们还没有SpiderMonkey/JavaScript支持,客户端只有Mootools,所以GWT的体验不太好。现在看看这个项目,它更加成熟,并且已经做了很多事情(他们 promise 的事情;))。我最喜欢 NGiNX_HTTP_Push_Module 纯粹是因为它似乎是其中“最轻”的 - 无论是协议(protocol)还是它使用的服务器(nginx 都以快速且能够同时处理多个连接而闻名 - 这在使用 Comet 时非常重要,因为您将有许多客户端始终“挂起”连接,等待来自服务器的数据。

唷,抱歉,文字墙很长,希望它会有所帮助(希望这就是您正在寻找的内容:D)。

关于ajax - 它在 GWT 中调用了什么来使 2 个 UI 保持一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2391203/

相关文章:

java - GWT JSNI - 调用特定对象的java方法

java - 如何在 GWT 中深度复制任意对象?

comet - Google Wave 使用什么服务器端解决方案?

asp.net - AJAX Comet - Microsoft 是否正在开发或支持任何解决方案以使其具有可扩展性?

javascript - 使用 AJAX 和 JavaScript 发送选定的选项

javascript - 使用 Javascript 获取 XML 节点值

javascript - 当我隐藏单选按钮时,星级评分系统无法正确更新

tomcat - 在Tomcat上运行Errai时如何启用热重载?

apache mod proxy 和 tomcat comet

javascript - 在 Ajax 调用中返回实体对象而不是字符串