Браузер, позволяющий подключать только 3 вкладки к локальному серверу через Socket.io - PullRequest
0 голосов
/ 03 ноября 2018

У меня есть приложение React, которое сейчас находится в разработке. Я использую socket.io, чтобы подключить интерфейс к моему файлу сервера, который я запускаю локально.

Я открыл несколько вкладок (включая инкогнито), чтобы я мог имитировать одновременное использование нескольких людей, и браузер зависает в 4-м окне. Я могу открыть до 3 просто отлично. Когда я представляю четвертое, я не могу загрузить приложение React или загрузить его, и оно зависает, когда я пытаюсь сделать что-нибудь, что вызывает действие сокета.

Я заметил, что могу открыть 4-е окно в Firefox без проблем. Так что похоже, что это Chrome / Browser, ограничивающий меня тремя сокетами для соединения из одного браузера.

Есть идеи о том, что происходит? У меня даже нет тонны выбросов. Я действительно не думаю, что это мой сервер или код клиента. Я попытался включить мультиплексирование, используя

const socket = io.connect('http://localhost:3000', { forceNew: true });

в моем коде клиента (React), но это не решило проблему, пока я не начал использовать Chrome и Firefox вместе, чтобы держать Chrome под 4 вкладками.

1 Ответ

0 голосов
/ 03 ноября 2018

К сожалению, это жестко заданный лимит открытых соединений с сервером в Chrome.

Это на самом деле 6 открытых сокетов на хост (https://support.google.com/chrome/a/answer/3339263?hl=en). Однако, чтобы запутать вещи, я подозреваю, что вы используете что-то вроде горячей перезагрузки, которая также использует сокет (следовательно, почему каждая страница занимает два сокета, а не только один).

Единственное, что вы можете сделать, в зависимости от вашей архитектуры, - это создать несколько серверов на разных портах (тогда у вас будет по 6 на порт).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...