0

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

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

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

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

但我在别处读到客户端不需要知道令牌。——这将如何运作?

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

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

4

1 回答 1

0

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

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

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

  3. onclose应该在套接字关闭时调用。onclose如果客户端失去连接,那么套接字超时并被调用可能需要一些时间。

于 2012-08-12T15:08:31.563 回答