Javascript 为什么在使用appenginechannelapi时要进行如此多的XHR轮询

Javascript 为什么在使用appenginechannelapi时要进行如此多的XHR轮询,javascript,python,google-app-engine,channel-api,Javascript,Python,Google App Engine,Channel Api,我正在尝试使用应用程序引擎来避免在我的客户端中轮询更新。问题是,在启动套接字之后,我在Chrome控制台中看到一个连续的XHR数据包流。他们都说: XHR finished loading: GET "http://localhost:8080/_ah/channel/devcommand=poll&channel=xxxOMITTEDxxx-channel-yyyOMITTEDyyy-zzzOMITTEDzzz-1&client=1". jsapi:5406goog.net.X

我正在尝试使用应用程序引擎来避免在我的客户端中轮询更新。问题是,在启动套接字之后,我在Chrome控制台中看到一个连续的XHR数据包流。他们都说:

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开发应用服务器

也许我在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>


示例代码清楚地表明,应该在HTMLDOM的标记中创建套接字。这就是我的问题的原因吗?如果是这样,那么在标记中创建套接字有什么不同呢?

轮询是在SDK中模拟通道API的方式,因此您看到的是预期的。

啊!谢谢你有参考资料吗?你可以看到代码: