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):
- Перейдите в адресную строку и введите
chrome://net-internals
.
- Выберите
Sockets
из меню.
- Нажмите на кнопку
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+.