Назад | Перейти на главную страницу

Несколько протоколов на одном порту

Насколько я понимаю, 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-проксированию.