我有一个基于JavaScript的WebApp,其中包含Eclipse Paho客户端。
WebApp在NGINX网络服务器上存储和执行。 在安装Web服务器的同一服务器上,MQTT代理mosquitto正在运行。我已将端口8884定义为安全连接的侦听器端口。
使用--cafile和-p 8884运行mosquitto_sub(简单C客户端)工作正常!
现在我想通过在我的MQTT客户端实现中传递mqttOptions = {useSSL:true}来使用SSL来保护WebApp。
我可以看到该应用正在尝试与wss:// ip而不是ws:// ip建立连接。但服务器响应连接拒绝,这是完全清楚的,因为我没有在网络服务器上配置任何东西,因为我不知道如何管理这个。 wss连接是否会“映射”到https或其他什么东西?我是否需要NGINX中的websocket代理?提前感谢您的帮助。
答案 0 :(得分:1)
对于带有mosquitto的websockets,你不能对原始MQTT和MQTT使用相同的端口,你需要创建2个独立的监听器。
您可以使用mosquitto_sub进行连接,这意味着您只使用原始MQTT设置了一个侦听器。
e.g。
listener 8883
listener 8884
protocol websockets
这将在8883上创建本机MQTT侦听器,在端口8884上创建基于websockets的MQTT
答案 1 :(得分:1)
我这样做了。这是mosquitto conf条目:
listener 8884 127.0.0.1
protocol websockets
cafile /path/to/ca.crt
certfile /path/to/certfile.crt
keyfile /path/to/keyfile.key
require_certificate false
因此应用程序正在尝试连接到myip:8884