gpt4 book ai didi

javascript - 为什么使用 App Engine Channel API 时需要进行如此多的 XHR 轮询

转载 作者:行者123 更新时间:2023-12-03 11:57:41 24 4
gpt4 key购买 nike

我正在尝试使用 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.XhrIo.send jsapi:5406goog.net.XhrIo.send jsapi:5352goog.appengine.DevSocket.poll_

在服务器尝试发送消息之前,我不会期望任何 XHR 消息。我正在使用 Python dev_appserver。

也许我的 Javascript 做错了什么。我已成功从服务器请求 token 。当我的客户端收到 token 时,我像这样启动套接字:

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 的标记内创建。这是我的问题的原因吗?如果是这样,在标签内创建套接字有何不同?

最佳答案

轮询是 SDK 中模拟 channel API 的方式,因此您所看到的结果是预期的。

关于javascript - 为什么使用 App Engine Channel API 时需要进行如此多的 XHR 轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25531106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com