2014-08-27 6 views
0

Я пытаюсь использовать App Engine Channel API, чтобы избежать опроса обновлений для моего клиента. Проблема в том, что я вижу непрерывный поток XHR-пакетов, отправленных в консоли Chrome после запуска сокета. Все они говорят:Почему так много опроса XHR при использовании приложения API канала API

XHR finished loading: GET "http://localhost:8080/_ah/channel/devcommand=poll&channel=xxxOMITTEDxxx-channel-yyyOMITTEDyyy-zzzOMITTEDzzz-1&client=1". jsapi:5406goog.net.XhrIo.send jsapi:5406goog.net.XhrIo.send jsapi:5352goog.appengine.DevSocket.poll_ 

Я бы не ожидал никаких сообщений XHR, пока сервер не попытается отправить сообщение. Я использую Python dev_appserver.

Возможно, я делаю что-то не так в своем Javascript. Я успешно запрашиваю токен с сервера. Когда мой клиент получает маркер, я начинаю сокет так:

function listen_to_channel(msg) { 
    console.log('--- server response to channel request: ' + JSON.stringify(msg)); 

    // open a channel socket 
    var channel = new goog.appengine.Channel(msg.token); 

    var socket = channel.open(); 
    socket.onopen = function(){ console.log('socket.onopen')}; 
    socket.onmessage = function(msg){ console.log('socket.onmessage: ' + msg.data)}; 
    socket.onerror = function(err){ console.log('socket.onerror: ' + err.description + ', ' + err.code)}; 
    socket.onclose = function(){ console.log('socket.onclose')}; 
} 

Я бегу, что код из JQuery, например, так:

$(document).ready(function() { 
    $.get('/admin/channel', {clientID:1}, listen_to_channel, 'json') 
}); 

связать зависимости следующим образом:

<head> 
    <script type="text/javascript" src="/_ah/channel/jsapi"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script src="javascript/admin.js"></script> 
</head> 

В примере кода ясно, что сокет должен быть создан в теге HTML DOM. Является ли это причиной моей проблемы? Если да, то что создает сокет в теге по-разному?

ответ

1

Опрос как канал-API моделируется в SDK, поэтому ожидается то, что вы видите.

+0

Ах! Благодарю. У вас есть ссылка? – cyrf

+0

Вы можете увидеть код: https://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/tools/devappserver2/channel.py – Greg