mqtt 连接
This commit is contained in:
@@ -161,7 +161,7 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio
|
|||||||
//设置mqtt环境 false 测试环境 true 正式环境
|
//设置mqtt环境 false 测试环境 true 正式环境
|
||||||
// ExternalResConstants.INSTANCE.setIS_MQTT_RELEASE(false);
|
// ExternalResConstants.INSTANCE.setIS_MQTT_RELEASE(false);
|
||||||
//设置http环境 false 测试环境 true 正式环境
|
//设置http环境 false 测试环境 true 正式环境
|
||||||
ExternalResConstants.INSTANCE.setIS_HTTP_RELEASE(true);
|
ExternalResConstants.INSTANCE.setIS_HTTP_RELEASE(false);
|
||||||
currentEnvironment = ExternalResConstants.INSTANCE.HTTP_PATH();
|
currentEnvironment = ExternalResConstants.INSTANCE.HTTP_PATH();
|
||||||
|
|
||||||
|
|
||||||
@@ -450,9 +450,9 @@ public class CommonAppContext extends MultiDexApplication implements Applicatio
|
|||||||
// startService(mqttServiceIntent);
|
// startService(mqttServiceIntent);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
mqttConnect=MqttConnect.getInstance(this, currentEnvironment.getMqttUrl(),"android-"+ MqttClient.generateClientId());
|
// mqttConnect=MqttConnect.getInstance(this, currentEnvironment.getMqttUrl(),"android-"+ MqttClient.generateClientId());
|
||||||
// mqttConnect=MqttConnect.getInstance(this,"tcp://1.13.101.98","android-"+ MqttClient.generateClientId());
|
// mqttConnect=MqttConnect.getInstance(this,"tcp://1.13.101.98","android-"+ MqttClient.generateClientId());
|
||||||
mqttConnect.mqttClient();
|
// mqttConnect.mqttClient();
|
||||||
|
|
||||||
// 每次启动应用时重置状态
|
// 每次启动应用时重置状态
|
||||||
SpUtil.getInstance().setBooleanValue("youth_model_shown", false);
|
SpUtil.getInstance().setBooleanValue("youth_model_shown", false);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import android.os.Looper;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.blankj.utilcode.util.ActivityUtils;
|
||||||
import com.blankj.utilcode.util.LogUtils;
|
import com.blankj.utilcode.util.LogUtils;
|
||||||
import com.google.android.gms.common.api.Api;
|
import com.google.android.gms.common.api.Api;
|
||||||
import com.hjq.toast.ToastUtils;
|
import com.hjq.toast.ToastUtils;
|
||||||
@@ -61,6 +62,7 @@ public class MqttConnect {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 单列模式,只能实例化一次
|
* 单列模式,只能实例化一次
|
||||||
|
*
|
||||||
* @param context
|
* @param context
|
||||||
* @param host
|
* @param host
|
||||||
* @param clientId
|
* @param clientId
|
||||||
@@ -76,51 +78,44 @@ public class MqttConnect {
|
|||||||
/**
|
/**
|
||||||
* 客户端connect连接mqtt服务器
|
* 客户端connect连接mqtt服务器
|
||||||
**/
|
**/
|
||||||
public void mqttClient()
|
public void mqttClient() {
|
||||||
{
|
close();
|
||||||
// close();
|
|
||||||
// handler.postDelayed(new Runnable() {
|
// 使用线程或线程池
|
||||||
// @Override
|
new Thread(() -> {
|
||||||
// public void run() {
|
|
||||||
try {
|
try {
|
||||||
// uiTip("MQTT开始连接");
|
|
||||||
MqttConnectOptions options = mqttConnectOptions();
|
MqttConnectOptions options = mqttConnectOptions();
|
||||||
mqttClient.setCallback(new MqttInitCallback(context, HOST, clientId));
|
mqttClient.setCallback(new MqttInitCallback(context, HOST, clientId));
|
||||||
|
// 在子线程连接(不会阻塞UI)
|
||||||
mqttClient.connect(options);
|
mqttClient.connect(options);
|
||||||
|
// 订阅也在子线程
|
||||||
// sub(topic, qos);
|
// sub(topic, qos);
|
||||||
sub(shutdown);
|
sub(shutdown);
|
||||||
sub(update_app);
|
sub(update_app);
|
||||||
sub(qx_hour_ranking);
|
sub(qx_hour_ranking);
|
||||||
sub(qx_redpacket_arrive);
|
sub(qx_redpacket_arrive);
|
||||||
// uiTip("MQTT连接成功");
|
|
||||||
}catch (MqttException e){
|
// UI操作回到主线程
|
||||||
// uiTip("MQTT连接失败,准备重连。。。:"+e.getMessage());
|
ActivityUtils.getTopActivity().runOnUiThread(() -> uiTip("MQTT连接成功"));
|
||||||
handler.postDelayed(new Runnable() {
|
|
||||||
@Override
|
} catch (Exception e) {
|
||||||
public void run() {
|
ActivityUtils.getTopActivity().runOnUiThread(() -> {
|
||||||
LogUtils.e(Tag,"开始重连。。。");
|
uiTip("MQTT连接失败,准备重连: " + e.getMessage());
|
||||||
mqttClient();
|
});
|
||||||
|
// 延迟重连
|
||||||
|
handler.postDelayed(() -> mqttClient(), 3000);
|
||||||
}
|
}
|
||||||
},3000);
|
}).start();
|
||||||
}
|
|
||||||
// }
|
|
||||||
// },200);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 在主线程弹出消息
|
* 在主线程弹出消息
|
||||||
|
*
|
||||||
* @param msg
|
* @param msg
|
||||||
*/
|
*/
|
||||||
private void uiTip(String msg) {
|
private void uiTip(String msg) {
|
||||||
LogUtils.d(Tag, msg);
|
LogUtils.d(Tag, msg);
|
||||||
handler.post(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
// Toast.makeText(context.getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
|
|
||||||
LogUtils.e("mqtt","连接成功");
|
|
||||||
ToastUtils.show(msg);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -131,7 +126,6 @@ public class MqttConnect {
|
|||||||
mqttClient = new MqttClient(HOST, clientId, new MemoryPersistence());
|
mqttClient = new MqttClient(HOST, clientId, new MemoryPersistence());
|
||||||
MqttConnectOptions options = new MqttConnectOptions();
|
MqttConnectOptions options = new MqttConnectOptions();
|
||||||
options.setUserName("public");
|
options.setUserName("public");
|
||||||
options.setConnectionTimeout(10);
|
|
||||||
options.setCleanSession(true);
|
options.setCleanSession(true);
|
||||||
options.setConnectionTimeout(10);
|
options.setConnectionTimeout(10);
|
||||||
options.setKeepAliveInterval(10);
|
options.setKeepAliveInterval(10);
|
||||||
@@ -203,8 +197,7 @@ public class MqttConnect {
|
|||||||
* 订阅某一个主题,可携带Qos
|
* 订阅某一个主题,可携带Qos
|
||||||
*
|
*
|
||||||
* @param topic 所要订阅的主题
|
* @param topic 所要订阅的主题
|
||||||
* @param qos
|
* @param qos 消息质量:0最多发送一次,不保证消息能够到达接收端,也不负责重发
|
||||||
* 消息质量:0最多发送一次,不保证消息能够到达接收端,也不负责重发
|
|
||||||
* 1至少发送一次,确保消息能够到达接收端,但可能会导致消息重复
|
* 1至少发送一次,确保消息能够到达接收端,但可能会导致消息重复
|
||||||
* 2确保消息恰好被接收一次
|
* 2确保消息恰好被接收一次
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user