Wyjaśnienie:
Ten problem występuje, ponieważ Chrome domyślnie zezwala na maksymalnie 6 otwartych połączeń. Więc jeśli przesyłasz strumieniowo wiele plików multimedialnych jednocześnie z 6 <video>
lub <audio>
tagów, siódme połączenie (na przykład obraz) po prostu zawiesza się, dopóki jedno z gniazd się nie otworzy. Zwykle otwarte połączenie zamyka się po 5 minutach bezczynności i dlatego widzisz, że Twoje pliki .png w końcu ładują się w tym momencie.
Rozwiązanie 1:
Możesz tego uniknąć, minimalizując liczbę tagów multimedialnych, które utrzymują otwarte połączenie. A jeśli potrzebujesz więcej niż 6, upewnij się, że ładujesz je jako ostatnie lub że nie mają atrybutów takich jak preload="auto"
.
Rozwiązanie 2:
Jeśli próbujesz użyć wielu efektów dźwiękowych w grze internetowej, możesz użyć interfejsu API Web Audio . Lub, aby uprościć, po prostu użyj biblioteki takiej jak SoundJS , która jest doskonałym narzędziem do jednoczesnego odtwarzania dużej liczby efektów dźwiękowych / ścieżek muzycznych.
Rozwiązanie 3: Gniazda z wymuszonym otwarciem (niezalecane)
Jeśli musisz, możesz wymusić otwarcie gniazd w przeglądarce (tylko w Chrome):
- Przejdź do paska adresu i wpisz
chrome://net-internals
.
- Wybierz
Sockets
z menu.
- Kliknij
Flush socket pools
przycisk.
To rozwiązanie nie jest zalecane, ponieważ nie należy oczekiwać, że użytkownicy będą postępować zgodnie z tymi instrukcjami, aby móc przeglądać witrynę.