Mam grę przeglądarkową i niedawno zacząłem dodawać do niej dźwięk.
Chrome nie ładuje całej strony, blokuje się "91 requests | 8.1 MB transferred"
i nie wczytuje więcej treści; a nawet łamie witrynę we wszystkich innych zakładkach, mówiąc Waiting for available socket
.
Po 5 minutach (dokładnie) dane są ładowane.
Nie dzieje się tak w żadnej innej przeglądarce.
Usunięcie jednego pliku MP3 (ostatnio dodanego) rozwiązało problem, więc czy może to być problem z limitem danych?
sockets
google-chrome
http
networking
streaming
Foxhoundn
źródło
źródło
Odpowiedzi:
Wygląda na to, że osiągnąłeś limit połączeń na serwer. Widzę, że ładujesz wiele plików statycznych, a moja rada jest taka, aby oddzielić je na subdomenach i udostępniać je bezpośrednio na przykład w Nginx.
Utwórz subdomenę o nazwie img.yoursite.com i załaduj stamtąd wszystkie swoje obrazy.
Utwórz subdomenę o nazwie scripts.twojadomena.com i załaduj stamtąd wszystkie swoje pliki JS i CSS.
Utwórz subdomenę o nazwie sounds.yoursite.com i załaduj stamtąd wszystkie swoje pliki MP3 ... itd.
Nginx ma świetne opcje bezpośredniego udostępniania plików statycznych i zarządzania buforowaniem plików statycznych.
źródło
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):
chrome://net-internals
.Sockets
z menu.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ę.
źródło
<video>
elementów HTML5 iWiadomość:
jest wyświetlany, ponieważ osiągnąłeś limit ssl_socket_pool dla hosta, serwera proxy lub grupy.
Oto maksymalna liczba połączeń HTTP, które można nawiązać za pomocą przeglądarki Chrome:
Maksymalnie na hosta: 6 połączeń.
Jest to prawdopodobnie zakodowane na stałe w kodzie źródłowym przeglądarki internetowej, więc nie można tego zmienić.
Łącznie 256 połączeń HTTP w puli na przeglądarkę.
Źródło: sieci korporacyjne dla urządzeń z Chrome
Powyższe limity można sprawdzić lub spłukać w
chrome://net-internals/#sockets
(lub w czasie rzeczywistym ochrome://net-internals/#events&q=type:SOCKET%20is:active
).Twój problem z dźwiękiem może być związany z błędem Chrome 162627, w którym dźwięk HTML5 nie ładuje się i osiąga maksymalną liczbę jednoczesnych połączeń na serwer: proxy. Jest to nadal aktywny problem w momencie pisania (2016).
Znacznie starszy problem związany z żądaniem wideo HTML5 pozostaje w toku , prawdopodobnie jest związany z problemem # 234779, który został naprawiony w 2014 r. I związany z SPDY, który można znaleźć w numerze 324653: Problem z SPDY: oczekiwanie na dostępne gniazda , ale to zostało już naprawione w 2014 roku, więc prawdopodobnie nie jest to związane.
Inny powiązany problem oznaczony teraz jako zduplikowany można znaleźć w problemie 401845: Błąd wstępnego ładowania metadanych audio. Załadowano tylko 6 z 10+, co było związane z problemem z kodem odtwarzacza multimediów, pozostawiając kilka wstrzymanych żądań.
Może to być również związane z niektórymi rozszerzeniami adware lub antywirusowymi Chrome używającymi twoich gniazd w tle (takich jak Sophos lub Kaspersky ), więc sprawdź aktywność sieciową w DevTools .
źródło
proste i poprawne rozwiązanie to odłóż preload swój plik audio i wideo z ustawień i ponownie sprawdź swoją stronę twój problem z oczekiwaniem na
wolne gniazdo zostanie rozwiązany ... jeśli używasz jplayera to zamień preload: "metadata" na preload: "none" z jplayera Plik JS ...
preload: „metadane” to domyślna wartość, która odtwarza plik audio / wideo podczas wczytywania strony, dlatego Google Chrome wyświetla błąd „oczekuje na dostępne gniazdo”
źródło
Nasza pierwsza myśl jest taka, że strona nie działa lub coś podobnego, ale prawda jest taka, że to nie jest problem ani niepełnosprawność. Nie stanowi to również problemu, ponieważ proste połączenie podczas testowania w przeglądarce Firefox, Opera lub Eksplorator usług otwiera się normalnie.
Błąd w przeglądarce Chrome wyświetla znak „Ta witryna jest niedostępna” oraz wyjaśnienie z legendą „Błąd 15 (net :: ERR_SOCKET_NOT_CONNECTED): nieznany błąd”. Błąd jest dość typowy w Google Chrome, a dokładniej w jego aktualizacjach, a jego obejściem jest ponowne uruchomienie komputera.
Ponieważ częściowe rozwiązania to niewiele, oferujemy samouczek, dzięki któremu rozwiążesz usterkę w mniej niż minutę. Aby uniknąć tego problemu i upewnić się, że usługi w Google Chrome są normalnie otwarte, w pasku adresu należy wstawić następujący tekst: chrome: // net-internals (a następnie nacisnąć „Enter”). Następnie muszą przejść do „Socket” w menu po lewej stronie i wybrać „Flush Socket Pools” (spójrz na poniższe zrzuty ekranu, aby poprowadzić http://www.fixotip.com/how-to-fix-error-waiting-for -available-sockets-in-google-chrome / ) Ten problem został rozwiązany i nie będzie już żadnych problemów z dostępem do Gmaila, Google czy jakichkolwiek usług giganta z Mountain View. Mam nadzieję, że uznasz to za przydatne i udostępnisz samouczek komu potrzebują lub sieci społecznościowe: Facebook, Twitter lub Google+.
źródło
Chrome jest przeglądarką opartą na Chromium, a przeglądarki oparte na Chromium pozwalają tylko na maksymalnie 6 otwartych połączeń na raz, po uruchomieniu siódmego połączenia będzie po prostu pozostawać bezczynne i czekać, aż jedno z 6 uruchomionych zostanie zatrzymane, a następnie będzie Zacznij biec. Stąd kod błędu „oczekuje na dostępne gniazda” , siódmy będzie czekał, aż jedno z tych 6 gniazd stanie się dostępne, a następnie zacznie działać.
Możesz albo
źródło