gpt4 book ai didi

php - 连接到 Flash Socket 时排队的 Ajax 调用

转载 作者:行者123 更新时间:2023-11-30 06:45:19 25 4
gpt4 key购买 nike

我在运行 Flash 套接字和使用 Ajax 加载页面时遇到了问题。两者都可以单独工作。我能够使用 Ajax 调用浏览我的站点,或者我能够通过套接字发送/接收消息。

但是,当由于某种原因连接套接字时,Ajax 调用似乎开始被放入队列中,并且在我停止套接字之前从未真正完成。如果我从套接字断开连接,或关闭服务器端的套接字,则 Ajax 调用会立即完成并加载页面。 Ajax 调用永远不会超时,它只会一直等待,直到我关闭套接字连接。

在 JavaScript 中,我使用 jQuery 的 $.getJSON() 函数加载页面(我认为这是异步调用)。

在 Flash 中,我使用基本的 ActionScript 3 Socket 类:

this._socket = new Socket();
this._socket.addEventListener(Event.CONNECT, onConnectHandler);
this._socket.addEventListener(Event.CLOSE, onCloseHandler);
this._socket.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorHandler);
this._socket.addEventListener(ProgressEvent.SOCKET_DATA, onDataHandler);
this._socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityErrorHandler);

编辑:

我已确认没有 正在发出 HTTP 请求。由于某种原因,它实际上正在被浏览器排队。我还注意到它不仅会排队 Ajax 请求,还会排队浏览器刷新。如果我点击刷新按钮,它也会永远挂起。

编辑 2:

实际上,当我应该检查端口 443 时,我检查了端口 80。实际上有一个请求正在向服务器发出,它只是由于某种原因挂起。这使我相信套接字(使用 PHP)存在问题,以某种方式使 PHP 处理器对请求进行排队,或者 Apache 正在对请求进行排队,因为它看到套接字正在使用 PHP。我仍然不确定为什么在套接字关闭之前无法满足对 PHP 处理器的额外请求,但我很确定这与 PHP 套接字处于始终打开状态这一事实有关,并且阻止其他请求。

最佳答案

显然,问题是由于浏览器实现的 2-limit 连接造成的。由于套接字使用与主机的持久连接之一,因此其余 HTTP 请求会遇到瓶颈。

问题及解决方法描述here :

...if the browser was going to limit the number of connections to a single host that the answer was simply to trick the browser into thinking it was talking to more than one host. Turns out doing this is rather trivial: simply add multiple CNAMEs for the same host to DNS, and then reference those as the host for some of the objects in the page.

关于php - 连接到 Flash Socket 时排队的 Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7473486/

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