1

我正在使用 Channel API (GAE Java SDK + GWT),并且我正在尝试为有关重新创建通道的问题创建一个解决方法(在到期日期之后以及在引发错误之后)。我发现这篇文章提供了可能的解决方案,但没有一个有效:https ://groups.google.com/forum/?fromgroups=#!searchin/google-appengine-java/channel/google-appengine-java/kD3H6BWNYuA/NivXiDrqW7QJ

我尝试在到期时间之前删除 Channel API iframe 并重新创建通道。它似乎可以工作,但是如果我重新创建一个频道,计时器不会重置,所以如果我尝试创建一个新频道并在过期期过后打开它,我会得到“onerror”和“onclose”(即使我关闭了插座)。如果我刷新页面,它可以工作,但这不是一个好的选择

此外,如果互联网连接关闭并重新打开,有时我会收到错误代码 0 或 1。这里也一样:我无法重新创建和打开新频道,因为我收到“onerror”和“onclose”。

谁能帮我提供更具体的解决方案细节?

更新:在调用 onclose/onerror 后,我使用计时器重新创建通道(5 秒),它现在可以工作了。但是在第一个令牌过期后,重新创建频道将不再起作用:(

4

2 回答 2

1

似乎无法使用 gwt-gae-channel-...jar 在 GWT 中重新创建通道的原因是因为 ChannelFacotry 只会实例化一次 Channel 类型的对象,因此,当尝试重新创建和打开另一个通道,例如必须将初始对象设置为 null。我能做到这一点的唯一方法是创建另一个类,然后复制/修改代码(我添加了一个简单的方法来将“通道”设置为空)。

于 2012-09-24T12:07:52.060 回答
0

如果您使用 javascript API,则必须在尝试创建新套接字之前调用 socket.close()。socket.close() 将删除 iframe 等。

于 2012-09-20T18:58:06.067 回答