App Engine チャネル API を使用すると断続的に問題が発生します。ほとんどの場合、おそらく 90% の場合、すべてが正常に機能します。しかし、残りの 10% の時間は、使用できないチャネルを取得します。このコードを何ヶ月も見てきた結果、この問題は論理エラーによるものではないと確信しています。使用できないチャネルとは、クライアントが正常に接続しても、サーバーがメッセージを送信できないことを意味します。クライアントとサーバーに関連するほとんどの操作は正常に完了します。
- サーバー上で、セッションに固有の新しいクライアント ID を持つチャネルを作成します
- クライアントは対応するトークンをフェッチし、それに接続します
- クライアントでは、チャネル ソケットで onOpen() が呼び出されます。
成功しないことの 1 つは、これらの欠陥のあるチャネルに対して /_ah/channel/connected を呼び出すことです。私は何十もの可能な回避策を試しましたが、成功しませんでした。今のところ、成功するまで優雅に再試行することで問題に対処していますが、これらのトリックがなくても機能するのは本当に素晴らしいことです.