Насколько я понимаю, Facebook Messenger использует 443
для трафика HTTP и MQTT (или любого другого протокола, который они могут использовать сейчас). Это кажется хорошей стратегией, поскольку только в некоторых очень ограниченных сетях 80
и 443
разрешается. Если бы я хотел использовать 443
для всего трафика из нашего приложения (HTTP и MQTT / MQTT через WebSockets), как я могу добиться того же?
Я предполагаю, что это возможно только в том случае, если приложение, привязанное к порту, выполняет переключение протокола. Обычно нет возможности привязать два приложения / службы к одному порту.
Учитывая, что WebSockets протокол инициирует свое рукопожатие клиентом, выполняя специальный HTTP-запрос и по умолчанию используются обычные HTTP-порты (80/tcp
и 443/tcp
для обычных и TLS-соединений соответственно), на самом деле вполне ожидаемо, что оба этих протокола будут подключаться к одному и тому же порту (портам).
Я полагаю, что может быть проблема, если вы хотите иметь два отдельных приложения, одно приложение HTTP и одно приложение WebSockets, работающие на одном хосте, используя один и тот же порт И один и тот же адрес (если вы можете привязать их к одному порту, но к разным адреса там действительно не при чем).
В таком случае я думаю, что обратный HTTP-прокси с поддержкой WebSockets перед обоими приложениями имеет наибольший смысл.
Посмотрите, например, как можно использовать Nginx для прокси-сервера WebSockets в дополнение к обычному HTTP-проксированию.