Eu tropecei no mesmo problema e também tentei usar mod_websocket_mosquitto para fazer isso funcionar, mas sem sucesso.
O que funcionou para mim foi usar proxy_wstunnel diretamente (seguindo este pequeno artigo - eu não encontrar os problemas mencionados no artigo, eles devem ser corrigidos por agora):
Primeiro eu disse ao apache para escutar na porta 1883 para aceitar as requisições mqtt (o arquivo de configuração padrão para isso é ports.conf
). É claro que você pode escolher basicamente qualquer porta, desde que seu cliente saiba onde se conectar.
Listen 1883
Em seguida, configuro um VirtualHost simples para fazer proxy de solicitações de entrada:
<VirtualHost *:1883>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /mqtt ws://$Broker-IP:$Broker-Port
ProxyPassReverse /mqtt ws://$Broker-IP:$Broker-Port
</VirtualHost>
Esta configuração irá provavelmente precisar de algumas tweeks, mas permitiu-me ligar ao meu corretor usando o IP do meu apache.
Para testar isso, eu usei o mqtt-spy do eclipse, que é um pouco mais fácil de usar para publicação manual / subscrevendo que a linha de comando:)
PS: E lembre-se de dizer ao mosquitto para usar websockets como protocolo no seu mosquitto.conf
:
listener $Broker-Port
protocol websockets