クリスマスに、チャネル API を使用して App Engine アプリケーションへのチャネルを開くコードをいくつか実装しましたが、問題なく動作していました。
最近コードに戻って、コードが壊れていることがわかりました。問題は、クライアント コードがフレームにロードしようとしている talkgadget にあるようです。
12 月 21 日に /_ah/channel/jsapi によって返されたコードのスナップショットを撮り、今日のコードと比較しています。
古いバージョンが talkgadget.google.com/talkgadget/d?token=[my-token] を取得しようとしたとき、http を使用するようにハードコーディングされていました。賢明なことに、コードは後で変更され、document.location でページのプロトコルをチェックし、https が使用されている場合に適応するようになりました。現在の問題は、chrome 拡張機能で実行しているときに chrome-extension を取得することです。プロトコルとして、当然のことながら拡張機能でチャネルを開くことができません。
バックグラウンド ページのベースをアプリスポット URL に設定しても、document.location は変更されませんが、そうすべきだという漠然とした考えはありました。(基準が何を言っているのかわかりません。)
これに対する回避策はありますか? 1 つの考えは、自分のサイトから読み込まれる独自の iframe を作成することでしたが、実際のチャネルの iframe がネストされ、事態が複雑になります。
Moishe や App Engine チームの誰かがこれについてコメントしてくれませんか。これはバグのようです。コードは、プロトコルをテストして代わりにベースタグを検索するか、javascript オブジェクトを介してこれを構成する方法を提供することにより、chrome 拡張機能を取り込む必要があります。