我有一个浏览器游戏,我最近开始为游戏添加音频。
Chrome不会加载整个页面并停留在"91 requests | 8.1 MB transferred"
并且不会加载任何其他内容,甚至会在所有其他标签Waiting for available socket
中对网站进行制动。
5分钟后(确切地)加载数据。
任何其他浏览器都不会发生这种情况。
删除一个MP3文件(最新添加的一个)修复了问题,所以我猜它是一个数据限制问题?
答案 0 :(得分:133)
<强>解释强>
出现此问题是因为Chrome默认情况下最多允许6个打开的连接。因此,如果您同时从6个<video>
或<audio>
标记流式传输多个媒体文件,则第7个连接(例如,图像)将挂起,直到其中一个套接字打开。通常情况下,打开的连接会在闲置5分钟后关闭,这就是为什么你看到你的.png最终加载的原因。
解决方案1:
您可以通过最小化保持打开连接的媒体标记的数量来避免这种情况。如果您需要超过6个,请确保最后加载它们,或者它们没有preload="auto"
等属性。
解决方案2:
如果您尝试为网页游戏使用多种音效,则可以使用Web Audio API。或者为了简化操作,只需使用像SoundJS这样的库,这是一个同时播放大量音效/音乐曲目的绝佳工具。
解决方案3:强制打开套接字(不推荐)
如果必须,您可以在浏览器中强制打开套接字(仅限Chrome浏览器):
chrome://net-internals
。Sockets
。Flush socket pools
按钮。建议不要使用此解决方案,因为您不应期望访问者按照这些说明查看您的网站。
答案 1 :(得分:63)
看起来您正在达到每台服务器连接的限制。我看到你正在加载很多静态文件,我的建议是在子域上将它们分开,并直接用Nginx提供它们。
创建名为 img.yoursite.com 的子域名并加载所有图片 从那里。
创建一个名为 scripts.yourdomain.com 的子域名,并从那里加载所有JS和CSS文件。
创建一个名为 sounds.yoursite.com 的子域名,并从那里加载所有MP3等等。
Nginx提供了直接提供静态文件和管理静态文件缓存的绝佳选择。
答案 2 :(得分:12)
消息:
显示等待可用的套接字......
,因为您已经按照主机,代理或组对ssl_socket_pool达到了限制。
以下是您可以使用Chrome浏览器进行的最大HTTP连接数:
每台主机的最大数量:6个连接。
这可能是在网络浏览器的源代码中硬编码的,因此您无法对其进行更改。
每个浏览器共有256个HTTP连接。
来源:Enterprise networking for Chrome devices
可以chrome://net-internals/#sockets
(或chrome://net-internals/#events&q=type:SOCKET%20is:active
实时)检查或刷新上述限制。
您的音频问题可能与{* 3}}相关,其中HTML5音频无法加载,并且它会达到每台服务器的最大同时连接数:代理。在撰写本文时(2016年),这仍然是一个活跃的问题。
与Chrome bug 162627相关的旧问题很多,那么它可能与2014年修复的HTML5 video request stay pending有关。与SPDY有关,可以在Issue #234779找到,但是这已经在2014年修复,所以可能它没有关联。
现在标记为重复的其他相关问题可以在Issue 324653: SPDY issue: waiting for available sockets中找到,该问题与媒体播放器代码的问题有关,留下了一堆暂停的请求。
这也可能与使用背景中的套接字的某些Chrome广告软件或防病毒扩展相关(例如 Sophos 或Issue 401845: Failure to preload audio metadata. Loaded only 6 of 10+),因此请检查网络 DevTools 中的活动。
答案 3 :(得分:6)
简单而正确的解决方案被推迟预设您的音频和视频文件,并重新检查您的页面等待可用插座的问题将得到解决...
如果您使用jplayer,则将预加载:“元数据”替换为预加载:“无”来自jplayer JS文件...
预加载:“元数据”是在页面加载时播放音频/视频文件的默认值,这就是谷歌浏览器显示“等待可用套接字”错误的原因
答案 4 :(得分:0)
我们首先想到的是网站是关闭还是类似,但事实是,这不是问题或残疾。这也不是一个问题,因为在Firefox,Opera或服务资源管理器上测试时的简单连接正常打开。
Chrome中的错误会显示“此网站不可用”的标志,并说明图例“错误15(net :: ERR_SOCKET_NOT_CONNECTED):未知错误”。该错误在Google Chrome中非常常见,更确切地说是在其更新中,其解决方法是重新启动计算机。
由于部分解决方案不多,我们提供了一个教程,您可以在不到一分钟的时间内解决问题。 要避免此问题并确保服务在Google Chrome中正常打开,请将以下内容插入地址栏:chrome:// net-internals(然后输入“Enter”)。然后他们必须转到左侧菜单中的“Socket”并选择“Flush Socket Pools”(查看以下屏幕截图以指导http://www.fixotip.com/how-to-fix-error-waiting-for-available-sockets-in-google-chrome/) 这已经解决了问题,并且不再会遇到访问Gmail,Google或Mountain View巨头的任何服务的问题。我希望你发现它很有用,并与他们需要的人或社交网络分享教程:Facebook,Twitter或Google +。
答案 5 :(得分:0)
Chrome是基于Chromium的浏览器,基于Chromium的浏览器一次最多只允许6个打开的套接字连接,当第7个连接启动时,它将处于空闲状态并等待6个正在运行的停止和停止连接。然后它将开始运行。 因此,错误代码“正在等待可用的套接字” ,第7个将等待这6个套接字之一变为可用,然后它将开始运行。
您可以