Ответы:
Для этого вам понадобится обратный прокси-сервер, например Apache 2.4. с mod_proxy_wstunnel .
Используйте его в качестве внешнего интерфейса, а затем туннелируйте соединения с соответствующим внутренним интерфейсом.
Только один процесс может прослушивать конкретный порт для одного и того же IP-адреса и протокола, поскольку в противном случае операционная система не будет знать, в какой процесс отправить полученный пакет.
Чтобы достичь желаемого, вам нужно будет использовать обратный прокси-сервер, который будет прослушивать порт 80 и перенаправлять трафик в правильный пункт назначения. Есть несколько способов сделать это. Например, вы можете настроить ваш веб-сервер (Apache) для пересылки запросов WebSocket или вы можете настроить Node.js для пересылки HTTP-трафика. Исследуйте доступные варианты и выберите тот, который соответствует вашим потребностям.
Помимо опции обратного прокси, которую уже упоминали другие, вы можете иметь несколько IP-адресов, назначенных компьютеру. Это может стоить IPv4 (или просто не быть доступным в зависимости от того, где размещен ваш сервер), но не должно, если вы в состоянии использовать IPv6 (то есть, если люди, подключающиеся к одному или обоим, или к вашим услугам будут поддерживать IPv6) , Таким образом, обе службы могут прослушивать порт 80 по разным адресам.
Поскольку вы упоминаете только порт 80, я предполагаю, что вы не используете HTTPS. Если вы используете опцию обратного прокси-сервера, то вам нужно либо иметь SSL-сертификат с несколькими именами, либо настроить SNI и учитывать тот факт, что некоторые старые клиенты (IE на XP, старые версии Android) не смогут подключиться без ошибок. Многоадресная опция позволяет обойти эту проблему за счет необходимости назначения дополнительных адресов.