На Рождество я реализовал некоторый код, чтобы открыть канал для своего приложения App Engine, используя API канала, и он работал нормально.
Я недавно вернулся к коду и обнаружил, что он не работает, и проблема, похоже, заключается в talkgadget, который клиентский код пытается загрузить во фрейм.
Я сделал снимок кода, возвращенного / _ah / channel / jsapi 21 декабря, и сравниваю его с сегодняшним кодом.
Когда старая версия пыталась получить talkgadget.google.com/talkgadget/d?token=[my-token], она была жестко запрограммирована на использование http. Вполне разумно, что код был позже изменен, чтобы проверить протокол страницы в document.location и адаптироваться к случаям, когда используется https. Теперь проблема в том, что при работе в расширении Chrome он захватывает расширение Chrome: как протокол и, естественно, канал не открывается в расширении.
Установка базы фоновой страницы для моего appspot URL не меняет document.location, хотя у меня было смутное представление, что так и должно быть. (Не уверен, что говорят стандарты.)
Есть ли обходной путь для этого? Одна мысль состояла в том, чтобы создать мой собственный iframe, загруженный с моего сайта, но тогда он будет вкладывать реальный канал iframe, усложняя вещи.
Интересно, может ли Мойше или кто-то еще из команды App Engine это прокомментировать? Похоже, что это ошибка, и код должен принимать расширения chrome либо путем тестирования протокола и поиска базового тега в качестве альтернативы, либо с помощью какого-либо способа настроить это через объект javascript.