2011-01-05 26 views
0

皆さん。アプリケーションのチャネル更新API(hereと記載)を使用して、アプリケーションのプッシュ更新を有効にしようとしています。しかし、私は通信チャネルを初期化するためのメカニズムを設定するいくつかの問題に就いています。Google App Engine Channel API(Python/Django)の問題

問題は、問題のページを読み込むと、onErrorハンドラとonCloseハンドラのデバッグプリントが得られますが、onOpenハンドラのデバッグプリントは得られません。他に何も起こらない。以下はGoogle Chromeデベロッパーツールを使用したjavascriptコンソールの出力です:

リソースはスクリプトとして解釈されますが、MIMEタイプtext/htmlで転送されます。 ..... JSAPI:-1

のonError ..... 443088:88

が..... 443088 OnCloseの:80

そして、ここでは、主に(の関連セクションです私のDjangoテンプレートから)JavaScriptコード:

<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> 

私はこれを正しく理解していれば開く時にもまだと呼ばれるように表示されていないので、その後、サーバー側のコードは、この時点では関係ありません。誰かがこれを手伝うことができたら、私はそれをとても感謝しています!

答えて

5

ユニット化されたチャネルトークンを使用しているようです。サーバーはこのクライアントのトークンを取得するためにchannel.create_channelを呼び出す必要があります。このトークンはChannelオブジェクトのコンストラクタに渡されます。

+0

ありがとうございました! –

関連する問題