如何将安全的 Web 套接字与 mosquitto 和 JS 一起使用?

How to use Secured Web Sockets with mosquitto and JS?

我有一个 JS 前端连接到 MQTT 服务器(mosquitto) with the help of the Paho JavaScript Client。这很好用,我可以发布和收听主题。

我现在想将 Web 套接字连接升级为安全连接。

为此,我在 /etc/mosquitto/mosquitto.conf 中添加了 certfilekeyfile 的条目:

pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
listener 1883
listener 1884
protocol websockets
# above is the working, non-wss configuration
certfile /etc/mosquitto/wildcard.crt
keyfile /etc/mosquitto/wildcard.key

假设这是正确的配置,我如何在 JS 中创建一个考虑安全连接的客户端?对于现有的,我有

client = new Paho.MQTT.Client("10.10.10.10", 1884, Math.random().toString(16).substring(7))

并且没有看到要在此处传递的任何其他配置?

来自docs

您有多种选择:

  1. 声明新客户端时的 host 可以是 URI 而不仅仅是 ip/hostname

    client = new Paho.MQTT.Client("wss://10.10.10.10:1884", Math.random().toString(16).substring(7));
    
  2. 您可以在 client.connect(options) 选项对象中使用 useSSL 标志。

    client.connect({
      useSSL: true
     });