【问题标题】:GWT Servlet-based Notification (Server Event Bus)GWT 基于 Servlet 的通知(服务器事件总线)
【发布时间】:2010-03-01 23:06:38
【问题描述】:

谁能想到一个好方法让服务器根据服务器处理通知客户端?例如,考虑以下事件:

  1. 用户请求删除数据,但由于运行时间较长,我们将其启动到队列中。
  2. 客户收到“是的,我们已成功完成您的交易”。
  3. 服务器删除了该项目,现在想要更新任何客户端可能正在使用的任何本地结构(我还想通知用户)。

我知道这可以通过客户端轮询来完成。有没有事件总线类型的方法来做到这一点?欢迎提出任何建议,但请记住我将 GWT 与 App Engine 结合使用。

【问题讨论】:

    标签: google-app-engine gwt


    【解决方案1】:

    标准的 AJAX 交互是客户端向服务器发送请求并期望很快得到某种响应。

    为了让服务器向客户端发起请求,您需要使用WebSockets,以及目前仅 Chrome 支持的实验性 HTML5 功能。

    或者,要模拟这种交互,您可以使用Comet(长轮询),由rocket-gwt 项目在 GWT 中提供。

    【讨论】:

    • 如果你想扩展,你不能在 App Engine 上做彗星 - 每个彗星请求都会占用你的一个并发请求。
    • 那么有没有更好的方法来完成这个?客户端可以每隔 X 秒/分钟 ping 一次以查看服务器是否已完成,而不是完整的长轮询,但它不会像彗星/websockets 那样实时。
    • App Engine 即将发布对 Channel API 的支持,以支持类似 Comet 的功能。要在 GWT 中支持此功能,请参阅此示例代码:code.google.com/p/dance-dance-robot/source/browse/trunk/src/com/…
    【解决方案2】:

    您想要 GWT 的服务器事件吗?看看 GwtEventService(他们不能选择更好的名称):http://code.google.com/p/gwteventservice/wiki/StartPage

    当然,它使用 Comet 实现,但使用 HTTP 时你不能做任何不同,客户端总是发起通信。请求,响应。

    【讨论】:

      猜你喜欢
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多