【问题标题】:Gracefully handling closed channel with GAE channel api使用 GAE 通道 API 优雅地处理封闭通道
【发布时间】:2012-08-08 23:21:52
【问题描述】:

我正在使用带有 Channel API 的 Google App Engine 创建一个 Web 应用程序。这是我第一次尝试做任何类似 Ajax 的事情,我怀疑有一种标准技术可以解决我的问题,但我一直找不到。

我的客户端程序将向服务器发送消息。如果消息无法发送,例如通道关闭,消息会发生什么?如果客户端在平板电脑上并且用户走出无线网络范围怎么办?对于我的应用程序,重新发送消息至关重要,但我不知道如何执行此操作。

当通道关闭时,我知道我应该从服务器请求一个新令牌,但我不知道我的客户端如何在不重新加载页面的情况下获取该令牌并打开连接(因此会丢失数据)。在here 给出的演示中,客户端需要知道令牌。

var channel = new goog.appengine.Channel({{token}});

但我在其他地方读到客户端不需要知道令牌。 -- 那会怎样?

另外,onerror 和 onclose 回调函数似乎没有给我失败的消息,所以我怎么知道需要重新发送什么?

如果有人能把我推向正确的方向,我将不胜感激。

【问题讨论】:

    标签: ajax google-app-engine client-server channel-api


    【解决方案1】:

    如果“重新发送消息至关重要”,那么您可能应该考虑使用本机客户端而不是浏览器。如果用户超出范围并关闭或重新加载浏览器窗口,则数据肯定会丢失。

    1. “我不知道我的客户端如何在不重新加载页面的情况下获取该令牌并打开连接”。使用AJAX to make a call to server - 这不会重新加载页面。

    2. 客户端需要令牌才能打开通道。没办法。

    3. onclose 应该在套接字关闭时调用。如果客户端断开连接,则可能需要一些时间才能调用套接字超时并调用 onclose。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-17
      • 2017-09-22
      • 1970-01-01
      • 2021-06-16
      • 2017-12-31
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      相关资源
      最近更新 更多