提交 44905da2 编写于 作者: 如梦技术's avatar 如梦技术 🐛

📝 继续完善 mqtt 客户端.

上级 49e2faac
......@@ -141,8 +141,12 @@ public final class MqttClient {
/**
* 断开 mqtt 连接
*/
public void disconnect() {
Tio.send(context, MqttMessage.DISCONNECT);
public boolean disconnect() {
boolean result = Tio.send(context, MqttMessage.DISCONNECT);
if (result) {
Tio.close(context, "MqttClient disconnect.");
}
return result;
}
/**
......@@ -151,6 +155,8 @@ public final class MqttClient {
* @return 是否停止成功
*/
public boolean stop() {
// 先断开连接
this.disconnect();
return tioClient.stop();
}
......
......@@ -25,6 +25,7 @@ import org.tio.client.intf.ClientAioHandler;
import org.tio.client.intf.ClientAioListener;
import org.tio.core.Node;
import org.tio.core.ssl.SslConfig;
import org.tio.utils.hutool.StrUtil;
import java.util.Objects;
import java.util.function.Consumer;
......@@ -233,10 +234,16 @@ public final class MqttClientCreator {
}
public MqttClient connect() throws Exception {
// 1. 初始化 mqtt 处理器
// 1. 生成 默认的 clientId
String clientId = getClientId();
if (StrUtil.isBlank(clientId)) {
// 默认为:MICA-MQTT- 前缀和 36进制的毫秒数
this.clientId("MICA-MQTT-" + Long.toString(System.currentTimeMillis(), 62));
}
// 2. 初始化 mqtt 处理器
ClientAioHandler clientAioHandler = new MqttClientAioHandler(Objects.requireNonNull(this.processor));
ClientAioListener clientAioListener = new MqttClientAioListener(this);
// 2. 重连
// 3. 重连配置
ReconnConf reconnConf = null;
if (this.reconnect) {
if (reInterval != null && reInterval > 0) {
......@@ -245,7 +252,7 @@ public final class MqttClientCreator {
reconnConf = new ReconnConf();
}
}
// tioClient
// 4. tioClient
TioClient tioClient = new TioClient(new ClientTioConfig(clientAioHandler, clientAioListener, reconnConf));
ClientChannelContext context = tioClient.connect(new Node(this.ip, this.port), this.timeout);
return new MqttClient(tioClient, this, context);
......
......@@ -16,7 +16,6 @@ public class MqttClientTest {
public static void main(String[] args) throws Exception {
// 初始化 mqtt 客户端
MqttClient client = MqttClient.create()
.clientId("MqttClientTest")
.username("admin")
.password("123456")
.processor(new MqttClientProcessorImpl())
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册