Использует ли Websocket то же TCP-соединение, которое использовалось исходным HTTP для рукопожатия? - PullRequest
0 голосов
/ 20 ноября 2018

Я хочу настроить кластер служб Node.js с балансировщиком нагрузки перед ними (который по некоторым причинам не может иметь липкие сеансы).

Давайте представим, что у меня есть два узла, и клиент (например, браузер, использующий socket.io) отправляет запрос wss: //, и сначала узел получает его от LB, затем отправляет обратно клиенту HTTP / 1.1 101 Ответ Web Socket Protocol Handshake.

  1. Будет ли клиент и сервер впоследствии использовать одно и то же TCP-соединение для отправки фреймов, которое использовалось для первоначального запроса клиента? Или будет установлено новое TCP-соединение, которое потенциально может быть перенаправлено на второй узел с помощью LB?

  2. В случае использования socket.io он все еще может быть откатом и фактически отправлять длинный опрос по http, прежде чем будет установлено соединение WebSocket для производительности. Могут ли эти запросы опроса оказаться на разных бэкэнд-узлах?

1 Ответ

0 голосов
/ 20 ноября 2018
  1. Да, WebSockets использует то же соединение TCP / IP, которое использовалось во время HTTP-рукопожатия.

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

...