Chrome se bloquea después de cierta cantidad de datos transferidos, esperando el socket disponible

Tengo un juego de navegador y recientemente comencé a agregar audio al juego.

Chrome no carga toda la página y se atasca en "91 requests | 8.1 MB transferred" y no carga más contenido e incluso frena el sitio web en todas las demás tabs diciendo ” Waiting for available socket .

Después de 5 minutos (exactamente), se cargan los datos.

enter image description here

enter image description here

Esto no ocurre en ningún otro navegador.

La eliminación de un archivo MP3 (el más reciente) solucionó el problema, así que supongo que es un problema de límite de datos.

Parece que estás llegando al límite de conexiones por servidor. Veo que está cargando muchos archivos estáticos y mi consejo es separarlos en subdominios y publicarlos directamente con Nginx, por ejemplo.

  • Crea un subdominio llamado img.yoursite.com y carga todas tus imágenes desde allí.

  • Crea un subdominio llamado scripts.yourdomain.com y carga todos tus archivos JS y CSS desde allí.

  • Crea un subdominio llamado sounds.yoursite.com y carga todos tus archivos MP3 desde allí … etc.

Nginx tiene excelentes opciones para servir directamente archivos estáticos y administrar el almacenamiento en caché de archivos estáticos.

Explicación:

Este problema ocurre porque Chrome permite hasta 6 conexiones abiertas de manera predeterminada. Entonces, por ejemplo, si está transmitiendo varios archivos multimedia simultáneamente desde 6 tags o , la séptima conexión (por ejemplo, una imagen) se bloqueará, hasta que se abra uno de los sockets. Por lo general, una conexión abierta se cerrará después de 5 minutos de inactividad, y es por eso que estás viendo tus pngs finalmente cargando en ese punto.

Solución 1:

Puede evitar esto minimizando la cantidad de tags de medios que mantienen una conexión abierta. Y si necesita tener más de 6, asegúrese de cargarlos al último, o de que no tienen atributos como preload="auto" .

Solución 2:

Si está tratando de usar múltiples efectos de sonido para un juego web, le recomiendo usar SoundJS. Es una gran herramienta para reproducir una gran cantidad de pistas de música / efectos de sonido simultáneamente.

Solución 3: Zócalos de apertura forzada (No recomendado)

Si es necesario, puede forzar la apertura de los sockets en su navegador (solo en Chrome):

  1. Ve a la barra de direcciones y escribe chrome://net-internals .
  2. En el menú desplegable, selecciona Sockets .
  3. Haga clic en el botón Flush socket pools .

No se recomienda esta solución porque no debe esperar que sus visitantes sigan estas instrucciones para poder ver su sitio.

El mensaje:

Esperando el socket disponible …

se muestra, porque ha alcanzado un límite en el ssl_socket_pool por Host, Proxy o Grupo.

Aquí está la cantidad máxima de conexiones HTTP que puede hacer con un navegador Chrome:

  • La cantidad máxima de conexiones por proxy es de 32 conexiones. Esto se puede cambiar en la Lista de políticas .
  • Máximo por Anfitrión: 6 conexiones.

    Es probable que esto esté codificado en el código fuente del navegador web, por lo que no puede cambiarlo.

  • Total de 256 conexiones HTTP agrupadas por navegador.

Fuente: redes empresariales para dispositivos Chrome

Los límites anteriores se pueden comprobar o purgar en chrome://net-internals/#sockets (o en tiempo real en chrome://net-internals/#events&q=type:SOCKET%20is:active ).


Su problema con el audio puede estar relacionado con el error 162627 de Chrome, donde el audio HTML5 no se carga y llega a las conexiones simultáneas máximas por servidor: proxy. Este sigue siendo un tema activo al momento de escribir (2016).

El problema mucho más antiguo relacionado con la solicitud de video HTML5 sigue pendiente , luego probablemente esté relacionado con el Issue # 234779 que se ha corregido en 2014. Y relacionado con SPDY que se puede encontrar en la edición 324653: SPDY: esperando los sockets disponibles , pero esto ya se solucionó en 2014, probablemente no esté relacionado.

Se puede encontrar otro problema relacionado ahora marcado como duplicado en el Issue 401845: Error al precargar los metadatos de audio. Cargó solo 6 de 10+ que estaba relacionado con el problema con el código del reproductor multimedia y dejó un montón de solicitudes detenidas.


Esto también puede estar relacionado con algunas extensiones de adware o antivirus de Chrome que utilizan los sockets en los fondos (como Sophos o Kaspersky ), por lo que debe verificar la actividad de la red en DevTools .

La solución simple y correcta se pospone. Precargue su archivo de audio y video de la configuración y vuelva a revisar su página. Su problema de esperar el socket disponible se resolverá …

si usa jplayer, reemplace preload: “metadata” para precargar: “none” del archivo Jplayer JS …

precarga: “metadata” es el valor predeterminado que reproduce su archivo de audio / video en la carga de la página. Es por eso que Google Chrome muestra el error “esperando el socket disponible”

Lo primero que pensamos es que el sitio no funciona o algo así, pero la verdad es que este no es el problema o la discapacidad. Tampoco es un problema porque una conexión simple cuando se prueba bajo Firefox, Opera o el Explorador de servicios se abren normalmente.

El error en Chrome muestra un letrero que dice “Este sitio no está disponible” y una aclaración con la leyenda “Error 15 (net :: ERR_SOCKET_NOT_CONNECTED): error desconocido”. El error es bastante habitual en Google Chrome, más precisamente en sus actualizaciones, y su solución es reiniciar la computadora.

Como las soluciones parciales no son demasiado, ofrecemos un tutorial para que solucione la falla en menos de un minuto. Para evitar este problema y asegurarse de que los servicios estén normalmente abiertos en Google Chrome, debe insertar lo siguiente en la barra de direcciones: chrome: // net-internals (luego ingrese “Enter”). Luego deben ir al “Socket” en el menú de la izquierda y elegir “Flush Socket Pools” (vea las siguientes capturas de pantalla para guiar http://www.fixotip.com/how-to-fix-error- waiting- for -available-sockets-in-google-chrome / ) Esto soluciona el problema y ya no tendrá problemas para acceder a Gmail, Google o cualquiera de los servicios del gigante de Mountain View. Espero que lo haya encontrado útil y comparta el tutorial con quien lo necesita o las redes sociales: Facebook, Twitter o Google+.