Протокол 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, то, возможно, вы захотите запустить их вместе (особый случай тесной интеграции).).