1

チャネル 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 のオブジェクトを 1 回だけインスタンス化するためであると思われます。別のチャネルを開くには、たとえば初期オブジェクトを null に設定する必要があります。私ができる唯一の方法は、別のクラスを作成し、コードをコピー/変更することです (「チャネル」を null に設定する簡単なメソッドを追加しました)。

于 2012-09-24T12:07:52.060 に答える
0

JavaScript API を使用する場合は、新しいソケットを作成する前に socket.close() を呼び出す必要があります。socket.close() は iframe などを削除します。

于 2012-09-20T18:58:06.067 に答える