Chrome зависает после передачи определенного количества данных - ожидая доступного сокета

У меня браузерная игра, и я недавно начал добавлять аудио в игру.

Chrome не загружает всю страницу, застревает на "91 requests | 8.1 MB transferred" и больше не загружает контент; и он даже ломает сайт во всех других вкладках, говоря Waiting for available socket.

Через 5 минут (точно) данные загружаются.

enter image description here

enter image description here

Это не происходит ни в одном другом браузере.

Удаление одного файла MP3 (последний добавленный) устранило проблему, так может ли это быть проблемой ограничения данных?

Ответ 1

Похоже, вы превышаете ограничение на количество соединений на сервер. Я вижу, что вы загружаете много статических файлов, и я советую разделить их на поддоменах и обслуживать их, например, напрямую с помощью Nginx.

  • Создайте поддомен под названием img.yoursite.com и загрузите все ваши изображения оттуда.

  • Создайте поддомен с именем scripts.yourdomain.com и загрузите оттуда все ваши файлы JS и CSS.

  • Создайте поддомен под названием sounds.yoursite.com и загрузите оттуда все свои MP3 файлы... и т.д.

Nginx имеет отличные возможности для непосредственного обслуживания статических файлов и управления кэшированием статических файлов.

Ответ 2

Объяснение:

Эта проблема возникает из-за того, что Chrome по умолчанию допускает до 6 открытых подключений. Таким образом, если вы одновременно транслируете несколько медиафайлов из 6 тегов <video> или <audio>, 7-е соединение (например, изображение) будет просто зависать, пока не откроется одно из гнезд. Обычно открытое соединение закрывается через 5 минут бездействия, и именно поэтому вы видите, что ваши .pngs окончательно загружаются в этот момент.

Решение 1:

Вы можете избежать этого, сводя к минимуму количество тегов мультимедиа, которые поддерживают открытое соединение. И если вам нужно больше 6, убедитесь, что вы загружаете их последними или что у них нет таких атрибутов, как preload="auto".

Решение 2:

Если вы пытаетесь использовать несколько звуковых эффектов для веб-игры, вы можете использовать Web Audio API. Или, чтобы упростить задачу, просто используйте библиотеку вроде SoundJS, которая является отличным инструментом для одновременного воспроизведения большого количества звуковых эффектов/музыкальных треков.

Решение 3. Розетки с принудительным открытием (не рекомендуется)

При необходимости вы можете принудительно открыть сокеты в своем браузере (только в Chrome):

  1. Перейдите в адресную строку и введите chrome://net-internals.
  2. Выберите Sockets из меню.
  3. Нажмите на кнопку Flush socket pools.

Это решение не рекомендуется, потому что вы не должны ожидать, что ваши посетители будут следовать этим инструкциям, чтобы иметь возможность просматривать ваш сайт.

Ответ 3

Сообщение:

Ожидание доступной розетки...

отображается, потому что вы достигли предела ssl_socket_pool для каждого хоста, прокси или группы.

Вот максимальное количество HTTP-соединений, которые вы можете установить с помощью браузера Chrome:

  • Максимальное количество соединений на прокси-сервер составляет 32 соединения. Это можно изменить в Списке политик.
  • Максимум на хост: 6 соединений.

    Вероятно, это жестко задано в исходном коде веб-браузера, поэтому вы не можете его изменить.

  • Всего 256 HTTP-соединений, объединенных в браузер.

Source: Enterprise networking for Chrome devices

Указанные выше ограничения можно проверить или сбросить в chrome://net-internals/#sockets (или в режиме реального времени в chrome://net-internals/#events&q=type:SOCKET%20is:active).


Ваша проблема со звуком может быть связана с ошибкой Chrome 162627, когда не удается загрузить аудио HTML5 и оно достигает максимального числа одновременных подключений на сервер: прокси. Это все еще активная проблема на момент написания (2016).

Гораздо более старая проблема, связанная с HTML5-запросом видео, остается в ожидании, тогда, вероятно, она связана с проблемой # 234779, которая была исправлена в 2014 году. И связана с SPDY, которую можно найти в проблеме 324653: проблема SPDY: ожидание доступных сокетов, но это было уже исправлено в 2014 году, поэтому, вероятно, это не связано.

Другая связанная с этим проблема, которая теперь помечена как дубликат, может быть найдена в , выпуск 401845: ошибка предварительной загрузки метаданных аудио. Загружено только 6 из 10+, что связано с проблемой с кодом медиаплеера, оставляя кучу приостановленных запросов.


Это также может быть связано с некоторыми рекламными или антивирусными расширениями Chrome, использующими ваши сокеты в фоновом режиме (например, Sophos или Kaspersky), поэтому проверьте сетевую активность в DevTools.

Ответ 4

простое и правильное решение откладывает предварительную загрузку вашего аудио- и видеофайла из настройки и повторной проверки вашей страницы. Ваша проблема в ожидании доступного сокета будет решена...

если вы используете jplayer, замените preload: "metadata" на preload: "none" из JSP файла jplayer...

preload: "metadata" - это значение по умолчанию, которое воспроизводит ваш аудио/видео файл на загрузке страницы, поэтому google chrome показывает ошибку "ожидающий доступный сокет"

Ответ 5

Наша первая мысль: сайт не работает или что-то подобное, но правда в том, что это не проблема или нетрудоспособность. Также это не проблема, поскольку простое соединение при тестировании в Firefox, Opera или сервисах Explorer открывается как обычно.

Ошибка в Chrome отображает знак "Этот сайт недоступен" и пояснение с пометкой "Ошибка 15 (net :: ERR_SOCKET_NOT_CONNECTED): неизвестная ошибка". Ошибка довольно обычна в Google Chrome, точнее в его обновлениях, и обходной путь заключается в перезагрузке компьютера.

Поскольку частичных решений не так много, мы предлагаем учебное пособие для вас, чтобы устранить неисправность менее чем за минуту. Чтобы избежать этой проблемы и убедиться, что сервисы обычно открыты в Google Chrome, необходимо вставить в адресную строку следующее: chrome://net-internals (затем введите "Enter"). Затем они должны перейти к "Socket" в левом меню и выбрать "Flush Socket Pools" (посмотрите следующие скриншоты для руководства http://www.fixotip.com/how-to-fix-error-waiting-for-available-sockets-in-google-chrome/) Это решило проблему и больше не будет иметь проблем с доступом к Gmail, Google или любому из сервисов гиганта Mountain View. Надеюсь, вы нашли его полезным и поделитесь учебником с теми, кому он нужен, или с социальными сетями: Facebook, Twitter или Google+.