Привет всем.Я пытаюсь использовать API канала App Engine (задокументировано здесь ), чтобы включить push-обновления для моего приложения.Однако я сталкиваюсь с некоторыми проблемами при настройке механизма инициализации канала связи.
Проблема заключается в том, что при загрузке рассматриваемой страницы я получаю отладочные отпечатки для обработчиков onError и onClose, ноЯ не получаю отладочную печать для обработчика onOpen.Больше ничего не происходитНиже приведен вывод на консоль javascript с использованием инструментов разработчика Google Chrome:
Ресурс интерпретируется как скрипт, но передается с типом MIME text / html...... jsapi: -1
onError ..... 443088: 88
onClose ..... 443088: 80
А вотэто соответствующий раздел (в основном) кода JavaScript из моего шаблона Django:
<script type="text/javascript">
onOpen = function() {
console.debug('onOpen');
var xhrArgs = {
url: '/channel/connect/',
headers: { 'Content-Type': 'application/json' },
postData: dojo.toJson({ 'channel_token': '{{ channel_token }}' }),
handleAs: 'text',
load: function(response) {
alert('success');
},
error: function(error) {
alert('failure: ' + error);
}
};
var deferred = dojo.xhrPost(xhrArgs);
};
onClose = function() {
console.debug('onClose');
};
onMessage = function(msg) {
console.debug('onMessage');
};
onError = function() {
console.debug('onError');
};
openChannel = function() {
var channel = new goog.appengine.Channel('{{ channel_token }}');
var handler = {
'onopen': onOpen,
'onclose': onClose,
'onmessage': onMessage,
'onerror': onError
};
var socket = channel.open(handler);
socket.onopen = onOpen;
socket.onmessage = onMessage;
};
setTimeout(openChannel, 100);
</script>
Если я правильно понимаю, то код на стороне сервера на данном этапе не имеет значения, так как onOpen не отображаетсячтобы даже быть призванным еще.Я знаю, что, должно быть, упускаю что-то простое, но если кто-то может помочь с этим, я был бы очень признателен!