修改mqtt,根据http 或者http动态修改ws wss访问地址
This commit is contained in:
@ -117,19 +117,20 @@
|
||||
*/
|
||||
import Paho from 'paho-mqtt';
|
||||
import allConfigs from '../config/index.js';
|
||||
|
||||
// 根据环境选择正确的配置
|
||||
const env = 'production'; //production //开发of线上 改这里就行
|
||||
const config = allConfigs[env];
|
||||
const env = 'production'; //production development
|
||||
const envConfig = allConfigs[env];
|
||||
const mqttProtocol = env === 'production' ? 'wss' : 'ws';
|
||||
const useSSL = env === 'production';
|
||||
class MqttClient {
|
||||
constructor() {
|
||||
this.client = null;
|
||||
this.options = {
|
||||
host: config.MQTT_HOST,
|
||||
port: config.MQTT_PORT,
|
||||
host: envConfig.MQTT_HOST,
|
||||
port: envConfig.MQTT_PORT,
|
||||
clientId: 'mqttjs_' + Math.random().toString(16).substr(2, 8),
|
||||
username: config.MQTT_USERNAME,
|
||||
password: config.MQTT_PASSWORD,
|
||||
username: envConfig.MQTT_USERNAME,
|
||||
password: envConfig.MQTT_PASSWORD,
|
||||
};
|
||||
this.onConnectCallback = null;
|
||||
this.messageCallbacks = new Map();
|
||||
@ -170,7 +171,7 @@ class MqttClient {
|
||||
potentialJsons.forEach(jsonString => {
|
||||
if (jsonString.trim() === '') return;
|
||||
if (this.messageCallbacks.has(topic)) {
|
||||
this.messageCallbacks.get(topic)(jsonString,message);
|
||||
this.messageCallbacks.get(topic)(jsonString, message);
|
||||
}
|
||||
});
|
||||
};
|
||||
@ -189,16 +190,18 @@ class MqttClient {
|
||||
|
||||
this.manualDisconnect = false;
|
||||
this.onConnectCallback = onConnectCallback;
|
||||
|
||||
console.log(`正在连接MQTT: ${this.options.host}:${this.options.port}/mqtt`);
|
||||
|
||||
console.log(`环境识别,http https:${env}`, {
|
||||
connectUrl: `${mqttProtocol}://${this.options.host}:${this.options.port}/mqtt`,
|
||||
useSSL: useSSL,
|
||||
clientId: this.options.clientId
|
||||
});
|
||||
try {
|
||||
const connectOptions = {
|
||||
timeout: 10, // 增加连接超时时间,应对网络波动
|
||||
keepAliveInterval: 30, // 明确设置心跳间隔为30秒
|
||||
userName: this.options.username,
|
||||
password: this.options.password,
|
||||
useSSL: false,
|
||||
useSSL: useSSL, //http ws https wss开启
|
||||
cleanSession: true,
|
||||
onSuccess: () => {
|
||||
console.log('MQTT连接成功');
|
||||
|
||||
Reference in New Issue
Block a user