我无法使用SSL证书(cert.pem,key.pem和ca.pem)连接到mqtt代理。
我一直在使用没有证书的paho mqtt库,并且它可以正常工作。
我已经看到paho库在connectionOptions中包含布尔参数useSSL,但是它不包含任何参数来指定我要在连接中使用的证书。
此外,我尝试在我的打字稿(角度)项目中使用mqtt.js库,但它不起作用。
通过Paho库的打字稿连接
const options: ConnectionOptions = {
invocationContext: { host: requestUrl, clientId: this.clientId },
timeout: 3,
mqttVersion: 3,
cleanSession: true,
useSSL: true,
onSuccess: this.mqttOnConnect,
keepAliveInterval: 3,
onFailure: function (failureMessage) {
console.log('Connection failed: ' + failureMessage.errorCode + 'Retrying');
},
reconnect: true,
};
this.client.connect(options);
带有mqtt.js库的Javascript mqtt客户端
`var options = {
//port: PORT,
//host: HOST,
key: KEY,
cert: CERT,
// The CA list will be used to determine if server is authorized
ca: TRUSTED_CA_LIST,
clientId: clientId_Var,
rejectUnauthorized: true,
connectTimeout: 30 * 1000,
keepalive: 10 * 1000,
protocol: 'wss',
}`
var client = mqtt.connect('wss://IP:8084', options)
client.on('connect', function () {
console.log('Connected')
client.subscribe('topic1')
client.publish('topic2', 'message payload')
client.on('message', function (topic, message) {
console.log(message)
})
client.on('close', function () {
console.log(clientId_Var + ' disconnected')
})
client.on('error', function (err) {
console.log(err)
client.end()
})
如果我使用mqtt.js库,它将进行连接,并且我的客户端会无故自动终止连接(触发关闭)