嘿,大家。我正在嘗試使用App Engine Channel API(文檔here)爲我的應用程序啓用推送更新。但是,我遇到了一些設置初始化通信通道機制的問題。Google App Engine通道API問題(Python/Django)
問題是,當我加載有問題的頁面時,我得到了onError和onClose處理程序的調試打印,但是我沒有得到onOpen處理程序的調試打印。沒有其他事情發生以下是使用Google Chrome開發人員工具的javascript控制檯輸出:
將資源解釋爲腳本,但以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不會出現甚至還調用。我知道我必須錯過簡單的事情,但如果有人能夠幫助我,我會非常感激!
謝謝,這樣做! – 2011-01-06 06:43:55