Ответ 1
Протокол WebSocket был разработан с учетом трех моделей:
- Сервер WebSocket работает полностью независимо от любого веб-сервера.
- Сервер WebSocket, работающий отдельно от веб-сервера, но с прокси-сервером, подключенным к серверу веб-сервера с веб-сервера (позволяющий совместному существованию веб-узла и HTTP-трафика на одном и том же порту).
- Сервер WebSocket работает как плагин на веб-сервере.
Модель, которую вы выбираете, действительно зависит от приложения, которое вы пытаетесь построить, и некоторых других ограничений, которые могут ограничить ваши варианты.
Например, если ваше приложение будет обслуживаться с одного веб-сервера, а соединение WebSocket всегда будет возвращено на тот же сервер, то, вероятно, имеет смысл просто запустить сервер WebSocket в качестве плагина/модуля в веб-сервера.
С другой стороны, если у вас есть общая служба WebSocket, которая может использоваться на разных веб-сайтах (например, у вас могут быть непрерывные обновления трафика с низкой задержкой, которые подаются с сервера WebSocket), тогда вы, вероятно, захотите запустить WebSocket сервер отдельно от любого веб-сервера.
В основном, чем более тесная интеграция между вашим сервисом WebSocket и вашим веб-сервисом, тем более вероятно, что вы захотите их запустить вместе и на том же порту.
Есть некоторые ограничения, которые могут вызывать одну или другую модель:
- Если вы управляете сервером (ами), но не входящими правилами брандмауэра, у вас, вероятно, нет другого выбора, кроме как запустить сервер WebSocket на одном и том же порту (-ах) в качестве вашего сервера HTTP/HTTPS (например, 80 и 443). В этом случае вам придется использовать плагин веб-сервера или прокси-сервер для реального сервера WebSocket.
- С другой стороны, если у вас нет прав суперпользователя на сервере, на котором запущен сервер WebSocket, то вы, вероятно, не сможете использовать порты 80 и 443 (ниже 1024, как правило, является привилегированным диапазоном портов), и в этом случае действительно неважно, запускаете ли вы серверы HTTP/S и WebSocket на том же порту или нет.
- Если у вас есть проверка подлинности на основе файлов cookie (например, OAuth) на веб-сервере, и вы хотели бы повторно использовать это для соединений WebSocket, тогда вы, вероятно, захотите их объединить (особый случай жесткой интеграции).