Подтвердить что ты не робот

Должен ли я использовать WebSocket для портов, отличных от 80?

Должен ли я использовать WebSocket для портов, отличных от 80? Разве это разрушает всю цель использования существующих web/HTTP-инфраструктур? И я думаю, что он больше не подходит для имени Веб Socket на портах, отличных от 80.

Если я использую WebSocket поверх других портов, почему бы просто не использовать TCP напрямую? Или есть особые преимущества в самом протоколе WebSocket?

И поскольку текущее рукопожатие WebSocket находится в форме запроса HTTP UPGRADE, означает ли это, что мне нужно включить HTTP-протокол на порт, чтобы можно было выполнить рукопожатие WebSocket?

4b9b3361

Ответ 1

Должен ли я использовать WebSocket для портов, отличных от 80? Уничтожает ли она всю цель? использования существующих web/HTTP-инфраструктур? И я думаю, что это уже не подходит для имени WebSocket на портах, отличных от 80.

Вы можете запустить сервер webSocket на любом порту, который позволяет ваша хост-система, и что вашему клиенту будет разрешено подключаться.

Однако существует ряд преимуществ для его запуска на порту 80 (или 443).

  • Сетевая инфраструктура, как правило, уже развернута и открывается на порт 80 для исходящих подключений из мест, в которых живут клиенты (например, настольные компьютеры, мобильные устройства и т.д.), в места, где живут серверы (например, центры обработки данных), Таким образом, новые отверстия в конфигурациях брандмауэра или маршрутизатора и т.д. Обычно не требуются для развертывания приложения webSocket на порту 80. Изменения конфигурации могут потребоваться для работы на разных портах. Например, многие крупные корпоративные сети очень разборчивы в отношении того, какие исходящие соединения портов могут быть сделаны и настроены только для определенных стандартных и ожидаемых поведений. Выбор нестандартного порта для подключения к сети может не разрешаться в некоторых корпоративных сетях. Это БОЛЬШАЯ причина использования порта 80 (максимальная совместимость с частными сетями с заблокированными конфигурациями).

  • Многие приложения WebSocket, запущенные из браузера, хотят использовать существующую инфраструктуру безопасности/входа/авторизации, уже используемую на порту 80 для веб-страницы хоста. Использование той же самой инфраструктуры для проверки подлинности подключения через веб-соединение может быть проще, если все находится на одном и том же порту.

  • Некоторые серверные инфраструктуры для web-сокетов (например, socket.io в node.js) используют объединенную инфраструктуру сервера (один процесс, один прослушиватель) для поддержки как HTTP-запросов, так и веб-узлов. Это проще, если оба находятся на одном и том же порту.


Если я использую WebSocket поверх других портов, почему бы просто не использовать TCP напрямую? Или есть ли какие-либо особые преимущества в самом протоколе WebSocket?

Протокол webSocket был первоначально определен для работы от браузера к серверу. В браузере нет общего доступа к TCP, поэтому, если вам нужен постоянный сокет без пользовательских надстроек браузера, тогда предлагается веб-узел. По сравнению с обычным TCP-соединением протокол webSocket предлагает возможность использовать HTTP-аутентификацию и куки файлы, стандартный способ выполнения ping/pong на уровне приложений и сквозной поддержки (TCP поддерживает хостинг-уровень keep-alive, но не сквозной), встроенный протокол кадрирования (вам придется создавать собственные форматы пакетов в TCP) и множество библиотек, которые поддерживают эти функции более высокого уровня. В принципе, webSocket работает на более высоком уровне, чем TCP (используя TCP под обложками) и предлагает более встроенные функции, которые большинство людей находят полезными. Например, при использовании TCP одна из первых вещей, которую вам нужно сделать, это получить или разработать протокол (средство выражения ваших данных). Это уже встроено в webSocket.

И поскольку текущее рукопожатие WebSocket находится в форме HTTP UPGRADE запрос, означает ли это, что мне нужно включить HTTP-протокол на порт, чтобы что может быть выполнено рукопожатие WebSocket?

У вас ДОЛЖЕН иметь HTTP-сервер, работающий на порте, который вы хотите использовать в сети, поскольку все запросы WebSocket начинаются с HTTP-запроса. Он не должен был быть полнофункциональным HTTP-сервером, но он должен обрабатывать начальный HTTP-запрос.

Ответ 2

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