2011-07-05 36 views
0

我試圖讓頻道API工作。 這是我到目前爲止有:appengine頻道沒有消息到達

視圖:

def channel_test(channel_token): 
    tries = 1 
    logging.info('starting channel_test') 
    for attempt in range(tries): 
     message = 'this is message number: ' + str(attempt) 
     channel.send_message(channel_token, message) 
     logging.info('just sent: ' + message) 
     logging.info(channel_token) 

def viewfunc(): 
    channel_token = channel.create_channel('aosasdf123') 
    deferred.defer(channel_test, channel_token, _countdown=10) 
    return render_template('Main/cycle.html', form=form, channel_token=channel_token) 

,並在我的模板:

<script type="text/javascript" charset="utf-8"> 
    function tell_user(message) { 
     $('#CycleChannelMessages').append(message + '<br />'); 
    } 

    function onOpened() { 
     console.log('onOpened'); 
     var connected = true; 
     tell_user('ready to take messages'); 
     tell_user('{{ channel_token }}'); 
    } 
    function onMessage(msg_obj) { 
     console.log('onMessage'); 
     tell_user('something'); 
     // tell_user(msg_obj.data); 

    } 
    function onError(obj) { 
     console.log('onError'); 
    } 
    function onClose(obj) { 
     console.log('onClose'); 
    } 

    var channel = new goog.appengine.Channel('{{ channel_token }}'); 
    var socket = channel.open(); 
    socket.onopen = onOpened; 
    socket.onmessage = onMessage; 
    socket.onerror = onError; 
    socket.onclose = onClose; 
</script> 

但我得到的唯一輸出是的OnOpen:

ready to take messages 
channel-1788270053-aosasdf123 

並在控制檯中我只看到:

onOpened 

所以沒有其他的功能已經運行。來自appengine啓動器的日誌清楚地表明延遲功能正在運行,並且不會導致錯誤或警告。

現在我做了什麼,因爲沒有錯是表示前端起來。 這是在dev-server BTW上。我還沒有在生產中嘗試過它。

框架是瓶,如果有什麼差別。

回答

4

您通過client_idsend_message而不是channel_token。所以,你的代碼應該是:

channel.send_message('aosasdf123', message) 

您將channel_token客戶端打開的通道,並保持在服務器端的CLIENT_ID祕密通過通道向客戶端發送消息。

+0

非常感謝。我確信這是我錯過的一些愚蠢的事情 –