Как получать сообщения, опубликованные от клиента, подключенного к брокеру через разные порты
Мы разрабатываем POC на базе брокера Mosquitto, где используются 3 разных клиента MQTT, т. Е. C, Python и phpMQTT, и нам нужно передавать сообщения между этими клиентами. Но клиент phpMQTT не поддерживает SSL/TLS, что ограничивает нас включением SSL для всего решения.
Есть ли способ связи между этими тремя клиентами, если мой клиент C & Python подключен к брокеру через безопасный порт, например, 8883(с включенной опцией TLS), и мой клиент phpMQTT через порт 1883(без опции TLS)?
2 ответа
Mosquitto позволяет прослушивать любое количество портов. Вы можете решить, поддерживать ли TLS на каждом слушателе. Например, у вас может быть порт 1883 для незашифрованных соединений, порт 8883 для обычного TLS на основе сертификатов, порт 8884 для TLS на основе сертификатов, который требует, чтобы клиенты передавали действительный сертификат, и порт 8885 для шифрования на основе TLS-PSK.
Помимо используемого шифрования, клиенты, подключенные к брокеру, будут взаимодействовать точно так же, как обычно.
Я не уверен, что москит может запускаться на двух разных портах. Вы можете попытаться сделать это с помощью HiveMQ, который поддерживает так называемый "гибридный режим" ( http://www.hivemq.com/docs/hivemq/1.4.1/). Этот гибридный режим позволяет подключаться без TLS на любом порту (например, 1883) и с TLS на другом порту (например, 8883).
Я не уверен, почему вы используете phpMQTT, но подойдет ли вам веб-сокет? HiveMQ поддерживает безопасные веб-сокеты из коробки, так что вы можете попробовать это. Сообщение в блоге о том, как это сделать, доступно здесь: http://www.hivemq.com/build-javascript-mqtt-web-application/
Отказ от ответственности: я один из разработчиков HiveMQ