Я наткнулся на ту же проблему, а также попытался использовать mod_websocket_mosquitto, чтобы заставить это работать, но безуспешно.
Что мне помогло, так это непосредственное использование proxy_wstunnel (после этой короткой статьи - я не сталкивался с упомянутыми в статье проблемами, они должны быть исправлены):
Сначала я сказал apache прослушивать порт 1883, чтобы принимать запросы mqtt (файл конфигурации по умолчанию для этого есть ports.conf
). Конечно, вы можете выбрать практически любой порт, если ваш клиент знает, к чему подключаться.
Listen 1883
Затем я настроил простой VirtualHost для прокси входящих запросов:
<VirtualHost *:1883> ProxyRequests Off ProxyPreserveHost On ProxyPass /mqtt ws://$Broker-IP:$Broker-Port ProxyPassReverse /mqtt ws://$Broker-IP:$Broker-Port </VirtualHost>
Для этой конфигурации, вероятно, потребуются некоторые настройки, но она позволила мне подключиться к моему брокеру, используя IP-адрес моего apache.
Чтобы проверить это, я использовал mqtt-spy от eclipse, который легче использовать для ручной публикации / подписки, чем для командной строки :)
PS: И не забудьте сказать Mosquitto использовать websockets в качестве протокола в вашем mosquitto.conf
:
listener $Broker-Port protocol websockets