令牌过期后,Google App Engine渠道API会重新连接

时间:2012-09-20 13:32:39

标签: java google-app-engine gwt channel-api

我正在使用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秒),它现在可以接合它。但是在第一个令牌到期后,重新创建一个频道将不再有效:(

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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