1,首先用的类库是这个,在app的gradle里添加依赖
compile 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.0'
另外还有一个service库,用来后台尝试重连功能的,这里没有使用过,需要更多功能的可以添加这个,并研究一下使用
compile 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'我这里并没有使用这个
2,如何连接到服务器,并且订阅
//声明一个MQTT客户端对象
private MqttAndroidClient mMqttClient;
//连接到服务器
private void connectMQTT1() {
//连接时使用的clientId
String clientId = "xxxx";
mMqttClient = new MqttAndroidClient(this, "tcp://xxxxhost:xxxxport" , clientId);
//设置连接参数
MqttConnectOptions options;
options = new MqttConnectOptions();
// 清除缓存
options.setCleanSession(true);
// 设置超时时间,单位:秒
options.setConnectionTimeout(15);
// 心跳包发送间隔,单位:秒
options.setKeepAliveInterval(15);
// 用户名
options.setUserName("username");
// 密码
options.setPassword("password".toCharArray());
// 设置MQTT监听
mMqttClient.setCallback(new MqttCallback() {
@Override
public void connectionLost(Throwable cause) {
//这里是做断开重连操作的 看个人需求
mHandler.sendEmptyMessageDelayed(MSG_DELAY_CONNECT_MQTT, 10000);
}
@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
}
@Override
public void deliveryComplete(IMqttDeliveryToken token) {
}
});
try {
//进行连接 有多个重载方法 看需求选择
mMqttClient.connect(options, null, new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
try {
//连接成功后订阅主题
mMqttClient.subscribe(mTopic, mQos);
} catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
//这里是做断开重连操作的 看个人需求
mHandler.sendEmptyMessageDelayed(MSG_DELAY_CONNECT_MQTT, 10000);
}
});
} catch (MqttException e) {
e.printStackTrace();
}
}3,如何发送消息给服务器
private void publishMsgToServer(String msg){
try {
mMqttClient.publish(mTopic, msg.getBytes(), mQos.intValue(), mRetained.booleanValue(), null, new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
}
});
} catch (MqttException e) {
e.printStackTrace();
}
}
完结,撒花,能力有限,不足错误之处欢迎指正,共同学习。
版权声明:本文为honghuinie原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。