学做投资网站,瀑布流网站源码下载,建设网站的内容,平果最新款手机1.MQTT#xff08;消息队列遥测传输协议#xff09;#xff0c;是一种基于 发布/订阅 #xff08;publish/subscribe#xff09;模式的轻量级通讯协议#xff0c; 该协议构建于TCP/IP协议上 。MQTT最大优点在于#xff0c;可以以极少的代码和有限的带宽消息队列遥测传输协议是一种基于 发布/订阅 publish/subscribe模式的轻量级通讯协议 该协议构建于TCP/IP协议上 。MQTT最大优点在于可以以极少的代码和有限的带宽为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议使其在物联网、小型设备、移动应用等方面有较广泛的应用。
MQTT协议中有三种身份发布者Publish、服务器Broker、订阅者Subscribe
2.api操作 Connect与服务器进行MQTT连接 Disconnect与服务器断开MQTT连接 Subscribe订阅某个主题 UnSubscribe取消订阅某个主题 Publish发布消息
3.安卓客户端示例
添加依赖 implementation org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.2implementation org.eclipse.paho:org.eclipse.paho.android.service:1.1.1添加权限
uses-permission android:nameandroid.permission.INTERNET /java代码
//创建实例
//brokerUrl为实例clientid是唯一值
MqttAndroidClient mqttAndroidClient new MqttAndroidClient(context, brokerUrl, clientId);//设置监听订阅消息的回调mqttAndroidClient.setCallback(mqttCallback);mMqttConnectOptions new MqttConnectOptions();//设置是否清除缓存mMqttConnectOptions.setCleanSession(true);//设置超时时间单位秒mMqttConnectOptions.setConnectionTimeout(60);//设置心跳包发送间隔单位秒mMqttConnectOptions.setKeepAliveInterval(60);//设置用户名mMqttConnectOptions.setUserName(userName);//设置密码mMqttConnectOptions.setPassword(password.toCharArray());//是否重连mMqttConnectOptions.setAutomaticReconnect(false);//同时发布的最大消息数量mMqttConnectOptions.setMaxInflight(10000);//建立连接mqttAndroidClient.connect(mMqttConnectOptions, null, iMqttActionListener);private final MqttCallback mqttCallback new MqttCallback() {//这里处理收到的数据Overridepublic void messageArrived(String topic, MqttMessage message) {}Overridepublic void deliveryComplete(IMqttDeliveryToken arg0) {Log.d(TAG, deliveryComplete: );}Overridepublic void connectionLost(Throwable arg0) {Log.e(TAG, connectionLost: arg0.getMessage());Log.e(TAG, onFailure: mqttAndroidClient.isConnected());doReconnect();}};private final IMqttActionListener iMqttActionListener new IMqttActionListener() {Overridepublic void onSuccess(IMqttToken arg0) {//建立订阅try {mqttAndroidClient.subscribe(topic, topicQos, null,new IMqttActionListener() {Overridepublic void onSuccess(IMqttToken asyncActionToken) {Log.d(TAG, Subscribed topic successfully: asyncActionToken.toString());}Overridepublic void onFailure(IMqttToken asyncActionToken,Throwable exception) {Log.d(TAG, Failed to subscribe to a topic: asyncActionToken.toString());}});} catch (MqttException e) {Log.d(TAG, Subscribe to the topic: e);e.printStackTrace();}}Overridepublic void onFailure(IMqttToken arg0, Throwable arg1) {arg1.printStackTrace();Log.e(TAG, iMqttActionListener: arg0 arg0.toString() arg1: arg1.getMessage());Log.e(TAG, onFailure: mqttAndroidClient.isConnected());doReconnect();}};MqttMessage message new MqttMessage();message.setPayload(payload.getBytes());message.setQos(0);//publish到mqttmqttAndroidClient.publish(mTopic, message, null, new IMqttActionListener() {Overridepublic void onSuccess(IMqttToken asyncActionToken) {Log.i(TAG, publish succeed!);listener.onState(1);}Overridepublic void onFailure(IMqttToken asyncActionToken, Throwable exception) {Log.i(TAG, publish failed!);listener.onState(2);}});