jiangping
2023-10-13 dff12cddd41f96e296cb652b0cf3c8c9ce43426f
server/services/src/main/java/com/doumee/core/mqtt/config/MqttClientInit.java
@@ -1,18 +1,15 @@
package com.doumee.core.mqtt.config;
import com.doumee.core.constants.Constants;
import com.doumee.core.mqtt.service.MqttPushCallback;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttTopic;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
public class MqttClientInit {
        static MqttClient client;
        private String userName = "doumee";
        private String passWord = "doumee@168";
        public static synchronized MqttClient getInstance(MqttConfig config,MqttPushCallback callBack){
            if(client !=null){
@@ -20,7 +17,7 @@
            }
            try {
                // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存
                client = new org.eclipse.paho.client.mqttv3.MqttClient(config.getHost(), config.getClientid() ,new MemoryPersistence());
                client = new org.eclipse.paho.client.mqttv3.MqttClient(config.getHost(), config.getClientid()+ Constants.getUUID(),new MemoryPersistence());
                // MQTT的连接设置
                MqttConnectOptions   options = new MqttConnectOptions();
                // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接
@@ -41,11 +38,16 @@
                //遗嘱
                options.setWill(topic, "close".getBytes(), 1, true);
                client.connect(options);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return  client;
        }
        public static synchronized void refreshClient() throws MqttException {
            if(client !=null){
                boolean result = client.isConnected();
                   client.reconnect();
            }
        }
}