私はブラウザゲームを手に入れて、最近ゲームに音声を追加し始めました。
Chromeはページ全体をロードせず、"91 requests | 8.1 MB transferred"
で停止し、それ以上コンテンツをロードせず、Waiting for available socket
と言う他のすべてのタブでWebサイトを停止します。
5分後(正確に)、データがロードされます。
これは他のブラウザでは発生しません。
1つのMP3ファイル(最後に追加されたもの)を削除すると問題が修正されたので、データ制限の問題だと思いますか?
サーバーあたりの接続数の制限に達しているようです。多くの静的ファイルを読み込んでいるようです。たとえば、サブドメインでそれらを分離し、Nginxで直接提供することをお勧めします。
img.yoursite.comというサブドメインを作成し、そこからすべての画像をロードします。
scripts.yourdomain.comというサブドメインを作成し、そこからすべてのJSおよびCSSファイルをロードします。
sounds.yoursite.comというサブドメインを作成し、そこからすべてのMP3をロードします...など。
Nginxには、静的ファイルを直接提供し、静的ファイルのキャッシュを管理するための優れたオプションがあります。
説明:
この問題は、Chromeがデフォルトで最大6つのオープン接続を許可するために発生します。したがって、6個の<video>
または<audio>
タグから複数のメディアファイルを同時にストリーミングしている場合、ソケットの1つが開くまで、7番目の接続(たとえば、画像)がハングします。通常、開いている接続は、非アクティブな状態が5分間続くと閉じます。そのため、その時点で.pngが最終的に読み込まれるのが見えます。
ソリューション1:
これを回避するには、開いている接続を維持するメディアタグの数を最小限にします。また、6つ以上必要な場合は、最後に読み込むか、preload="auto"
などの属性がないことを確認してください。
ソリューション2:
Webゲームに複数のサウンドエフェクトを使用する場合は、 Web Audio API を使用できます。または、物事を単純化するには、 SoundJS のようなライブラリを使用します。これは、大量のサウンドエフェクト/音楽トラックを同時に再生するための優れたツールです。
解決策3:ソケットを強制的に開く(非推奨)
必要に応じて、ブラウザでソケットを強制的に開くことができます(Chromeのみ):
chrome://net-internals
と入力します。Sockets
を選択します。Flush socket pools
ボタンをクリックします。このソリューションは、訪問者がこれらの指示に従ってサイトを表示できると期待してはならないため、お勧めしません。
メッセージ:
使用可能なソケットを待機しています...
ホスト、プロキシ、またはグループごとにssl_socket_poolの制限に達したために表示されます。
Chromeブラウザで作成できるHTTP接続の最大数は次のとおりです。
ホストあたりの最大数:6接続。
これは、Webブラウザーのソースコードにハードコードされている可能性が高いため、変更できません。
ブラウザごとにプールされる合計256のHTTP接続。
ソース: Chrome搭載デバイスのエンタープライズネットワーキング
上記の制限は、chrome://net-internals/#sockets
で(またはリアルタイムでchrome://net-internals/#events&q=type:SOCKET%20is:active
で)チェックまたはフラッシュできます。
音声の問題は Chromeバグ162627 に関連している可能性があります。HTML5音声の読み込みに失敗し、server:proxyあたりの最大同時接続数に達します。これは、執筆時点(2016年)でも依然として活発な問題です。
HTML5ビデオリクエストは保留中 に関連するはるかに古い問題であり、おそらく2014年に修正された 問題#234779 に関連しています。また、SPDYに関連する 問題324653:SPDYの問題:利用可能なソケットの待機 。ただし、これは2014年にすでに修正されているため、おそらく関連性はありません。
現在重複とマークされているその他の関連問題は 問題401845:オーディオメタデータのプリロードに失敗しました。10+のうち6つのみをロードしました ぶらぶら。
これは、バックグラウンドでソケットを使用する一部のChromeアドウェアまたはウイルス対策拡張機能(Sophosまたは Kaspersky など)にも関連している可能性があります。 ネットワークDevToolsのアクティビティ。
シンプルで正しい解決策は、オーディオファイルとビデオファイルの設定を事前にロードし、ページを再確認して、利用可能なソケットを待つ問題を解決します...
jplayerを使用する場合、preload: "metadata"をpreload: "none"からjplayer JSファイルに置き換えます...
preload: "metadata"は、ページのロード時にオーディオ/ビデオファイルを再生するデフォルト値です
最初に考えたのは、サイトがダウンしているなどです。しかし、真実はこれが問題や障害ではないということです。また、Firefox、Opera、またはサービスエクスプローラでテストしたときの単純な接続が通常どおりに開くため、問題もありません。
Chromeのエラーには、「このサイトは利用できません」というサインと、「エラー15(net :: ERR_SOCKET_NOT_CONNECTED):不明なエラー」という凡例の説明が表示されます。このエラーは、Google Chrome、より正確にはそのアップデートでは非常に一般的であり、回避策はコンピューターを再起動することです。
部分的な解決策はそれほど多くないので、1分以内に障害を解決するためのチュートリアルを提供します。この問題を回避し、Google Chromeでサービスが通常開いていることを確認するには、アドレスバーに次を挿入する必要があります。chrome:// net-internals(「Enter」を入力)。次に、左側のメニューの[ソケット]に移動して[ソケットプールのフラッシュ]を選択する必要があります(次のスクリーンショットを参照してください http://www.fixotip.com/how-to-fix-error -waiting-for-available-sockets-in-google-chrome / )この問題は解決され、Gmail、Google、またはマウンテンビューの巨人のサービスにアクセスする際の問題は発生しなくなりました。このチュートリアルが役に立つことを知り、Facebook、Twitter、Google +などのソーシャルネットワークで必要な人とチュートリアルを共有してください。