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