web-dev-qa-db-fra.com

Chrome se bloque après une certaine quantité de données transférées - en attente du socket disponible

J'ai un jeu par navigateur et j'ai récemment commencé à ajouter de l'audio au jeu.

Chrome ne charge pas toute la page et reste bloqué à "91 requests | 8.1 MB transferred" et ne charge plus de contenu. et il casse même le site dans tous les autres onglets, en disant Waiting for available socket.

Après 5 minutes (exactement), les données sont chargées.

enter image description here

enter image description here

Cela ne se produit sur aucun autre navigateur.

Supprimer un fichier MP3 (le dernier ajouté) a résolu le problème. S'agit-il d'un problème de limite de données?

97
Foxhoundn

On dirait que vous atteignez la limite de connexions par serveur. Je vois que vous chargez beaucoup de fichiers statiques et mon conseil est de les séparer sur des sous-domaines et de les servir directement avec Nginx, par exemple.

  • Créez un sous-domaine appelé img.yoursite.com et chargez toutes vos images à partir de là.

  • Créez un sous-domaine appelé scripts.votredomaine.com et chargez tous vos fichiers JS et CSS à partir de là.

  • Créez un sous-domaine appelé sounds.yoursite.com et chargez tous vos fichiers MP3 à partir de là ... etc.

Nginx propose d'excellentes options pour servir directement des fichiers statiques et gérer la mise en cache des fichiers statiques.

66
Predte4a

Explication:

Ce problème se produit car Chrome autorise jusqu'à 6 connexions ouvertes par défaut. Ainsi, si vous diffusez simultanément plusieurs fichiers multimédias à partir de balises 6 <video> ou <audio>, la 7ème connexion (par exemple, une image) sera simplement suspendue jusqu'à ce que l'un des sockets s'ouvre. Habituellement, une connexion ouverte se ferme après 5 minutes d'inactivité. C'est pourquoi vous voyez que vos fichiers .pngs sont finalement en train de se charger.

Solution 1:

Vous pouvez éviter cela en réduisant le nombre de balises de média qui maintiennent une connexion ouverte. Et si vous avez besoin de plus de 6, assurez-vous de les charger en dernier, ou qu'ils ne possèdent pas d'attributs tels que preload="auto".

Solution 2:

Si vous essayez d'utiliser plusieurs effets sonores pour un jeu Web, vous pouvez utiliser Web Audio API . Ou, pour simplifier les choses, utilisez simplement une bibliothèque telle que SoundJS , qui est un excellent outil pour jouer simultanément une grande quantité d’effets sonores et de pistes de musique.

Solution 3: Sockets à ouverture forcée (Non recommandé)

Si vous le souhaitez, vous pouvez forcer l'ouverture des sockets dans votre navigateur (uniquement dans Chrome):

  1. Allez dans la barre d'adresse et tapez chrome://net-internals.
  2. Sélectionnez Sockets dans le menu.
  3. Cliquez sur le bouton Flush socket pools.

Cette solution n'est pas recommandée car vous ne devez pas vous attendre à ce que vos visiteurs suivent ces instructions pour pouvoir afficher votre site.

137
Marquizzo

Le message:

En attente de la prise disponible ...

s'affiche, car vous avez atteint une limite sur le pool ssl_socket_pool par hôte, proxy ou groupe.

Voici le nombre maximal de connexions HTTP que vous pouvez établir avec un navigateur Chrome:

  • Le nombre maximal de connexions par proxy est de 32 connexions. Cela peut être changé dans Policy List .
  • Maximum par hôte: 6 connexions.

    Ceci est probablement codé en dur dans le code source du navigateur Web, vous ne pouvez donc pas le changer.

  • Total de 256 connexions HTTP regroupées par navigateur.

Source: Mise en réseau d'entreprise pour Chrome appareils

Les limites ci-dessus peuvent être vérifiées ou effacées à chrome://net-internals/#sockets (ou en temps réel à chrome://net-internals/#events&q=type:SOCKET%20is:active).


Votre problème avec l'audio peut être lié à bug Chrome 162627 où l'audio HTML5 ne parvient pas à se charger et atteint le maximum de connexions simultanées par serveur: proxy. Ce problème est toujours d'actualité au moment de la rédaction de ce document (2016).

Problème beaucoup plus ancien lié à demande de vidéo HTML5 en attente , il est probablement lié à numéro 234779 qui a été corrigé en 2014. Et lié à SPDY, qui se trouve dans - Problème 324653: Problème SPDY: attente des sockets disponibles , mais cela avait déjà été corrigé en 2014, donc ce n'est probablement pas lié.

Problème 401845: Échec de préchargement des métadonnées audio. Chargé seulement 6 sur 10 + qui était lié au problème lié au code du lecteur multimédia laissant de nombreuses demandes en pause. traîner.


Cela peut également être lié à certaines extensions du logiciel de publicité ou antivirus Chrome utilisant vos sockets à l’arrière-plan (comme Sophos ou Kaspersky ), vérifiez l'activité du réseau dans DevTools .

12
kenorb

la solution simple et correcte est remise à zéro. Préchargez votre fichier audio et vidéo du paramétrage et revérifiez votre page. Votre problème d’attente de la prise disponible sera résolu ...

si vous utilisez jplayer, remplacez préchargement: "métadonnées" à préchargement: "aucun" à partir du fichier Jplayer JS ...

préchargement: "métadonnées" est la valeur par défaut qui lit votre fichier audio/vidéo lors du chargement de la page. C’est la raison pour laquelle Google chrome affiche une erreur "attente du support disponible".

6
Najam ali shahid

Notre première pensée est que le site est en panne ou similaire, mais la vérité est que ce n’est pas le problème ni le handicap. Ce n'est pas un problème non plus, car une simple connexion testée sous Firefox, Opera ou Explorateur de services, s'ouvre normalement.

L'erreur dans Chrome affiche un signe "Ce site n'est pas disponible" et une clarification avec la légende "Erreur 15 (net :: ERR_SOCKET_NOT_CONNECTED): erreur inconnue". L'erreur est assez courante dans Google Chrome, plus précisément dans ses mises à jour, et sa solution consiste à redémarrer l'ordinateur.

Comme les solutions partielles ne représentent pas grand chose, nous vous proposons un tutoriel pour résoudre le problème en moins d’une minute. Pour éviter ce problème et vous assurer que les services sont normalement ouverts dans Google Chrome, insérez ce qui suit dans la barre d'adresse: chrome: // net-internals (puis donnez "Entrée"). Ils doivent ensuite aller à la "Socket" dans le menu de gauche et choisir "Flush Socket Pools" (regardez les captures d'écran suivantes pour vous guider http://www.fixotip.com/how-to-fix-error -waiting-for-available-sockets-in-google-chrome / ) Ceci a résolu le problème et ne rencontrera plus de problèmes pour accéder à Gmail, Google ou à l'un des services du géant de Mountain View. J'espère que vous l'avez trouvé utile et partagez le tutoriel avec lequel ils ont besoin ou les réseaux sociaux: Facebook, Twitter ou Google+.

0
John