Я пытаюсь создать минимально возможное приложение GAE, чтобы показать использование API канала. У меня есть два обработчика в питоне, первый «TestPage» отправляет html, показанный ниже. Второй «SendPage» пытается отправить сообщение по каналу на тестовую страницу. Код для TestPage
class TestPage(Handler):
def get(self):
token = channel.create_channel("1")
self.render("test.html", token = token)
Он просто создает канал с идентификатором «1» и повторно обрабатывает страницу с токеном, переданным обратно из create_channel().
SendPage просто:
class SendPage(Handler):
def get(self):
channel.send_message("1", "hello")
self.write("sent hello to 1")
HTML настолько мал, насколько я мог его получить:
<!DOCTYPE HTML>
<html>
<body>
<br>Token is {{ token }}
<br>
<div id="debug">_</div>
<!--
<script src="https://talkgadget.google.com/talkgadget/channel.js"></script>
-->
<script src="static/channel.js"></script>
<script defer="defer">
function debug(s) {
document.getElementById("debug").innerHTML = s;
}
var channel = new goog.appengine.Channel( {{ token }} );
var socket = channel.open();
socket.onopen = function(e) {
debug("open");
}
socket.onclose = function(e) {
debug("close");
}
socket.onerror = function(e) {
debug("error");
}
socket.onmessage = function(e) {
debug("message");
}
debug("ready");
</script>
</body>
</html>
Итак, внутри хрома я открываю TestPage и вижу сообщение «готово». Затем я открываю SendPage на другой вкладке. И увидеть "отправленное сообщение". Затем, когда я вернусь к TestPage, я ожидаю, что «готово» будет заменено «сообщением». Но этого никогда не происходит. Ни одна из функций обработчика сокета не вызывается.
Я застрял на данный момент и был бы признателен за любую помощь или предложения.
Спасибо.