react-native 中使用mqtt总结

react_native_mqtt(websocket)

react_native_mqtt使用websocket协议接受发送数据,需要使用其他协议的请过滤:

/**
 * react_native_mqtt
 * 此插件只能发websocket 长连接
 */
import init from 'react_native_mqtt';
import { parseString } from 'react-native-xml2js';
import { AsyncStorage, ToastAndroid } from 'react-native';

init({
  size: 10000,
  storageBackend: AsyncStorage,
  defaultExpires: 1000 * 3600 * 24,
  enableCache: true,
  reconnect: true,
  sync: {},
});

var client = {};

function onConnect() {
  ToastAndroid.show('mqtt成功', ToastAndroid.SHORT);
  console.log('mqtt成功');
  // 主题
  client.subscribe('dev');
}

function onConnectionLost(responseObject) {
  if (responseObject.errorCode !== 0) {
    console.log(`onConnectionLost:${responseObject.errorMessage}`);
  }
}
// 创建
client = new Paho.MQTT.Client('test.mosquitto.org', 8083, '/mqtt');
// 连接
client.connect({
  onSuccess: onConnect,
  onFailure: (e) => {
    ToastAndroid.show('mqtt失败', ToastAndroid.SHORT);
    console.log('mqtt失败');
    console.log(e);
  },
  useSSL: false,
});
// 断开
client.onConnectionLost = onConnectionLost;

function onMessageArrived(message) {
  console.log(`onMessageArrived:${message.payloadBytes}`);
  console.log(`onMessageArrived:${message.destinationName}`);
  console.log(`onMessageArrived:${message.qos}`);
  console.log(`onMessageArrived:${message.retained}`);
  console.log(`onMessageArrived:${message.duplicate}`);
  console.log(`onMessageArrived:${message.payloadString}`);
}

export const messageMq = function (callback) {
  // 接受消息
  client.onMessageArrived = function (message) {
    console.warn(`onMessageArrived:${message.payloadString}`);
    if (callback !== undefined) {
      parseString(message.payloadString, (err, result) => {
        callback(result);
      });
    }
  };
};

react-native-paho-mqtt(websocket)

/**
 * react-native-paho-mqtt
 * 此插件可发websocket tcp 等长连接
 */
import { Client, Message } from 'react-native-paho-mqtt';
import { parseString } from 'react-native-xml2js';

console.log('react-native-paho-mqtt');
const myStorage = {
  setItem: (key, item) => {
    myStorage[key] = item;
  },
  getItem: (key) => myStorage[key],
  removeItem: (key) => {
    delete myStorage[key];
  },
};

console.log(1);
const client = new Client({
  uri: 'ws://test.mosquitto.org/mqtt',
  clientId: 'dev',
  storage: myStorage,
});

console.log(2);
// set event handlers
client.on('connectionLost', (responseObject) => {
  if (responseObject.errorCode !== 0) {
    console.log(`error:${responseObject.errorMessage}`);
  }
});

// connect the client
client
  .connect()
  .then(() => {
    // Once a connection has been made, make a subscription and send a message.
    console.log('onConnect');
    return client.subscribe('dev');
  })
  .catch((responseObject) => {
    if (responseObject.errorCode !== 0) {
      console.log(`onConnectionLost:${responseObject.errorMessage}`);
    }
  });

export const messageMq = function (callback) {
  client.on('messageReceived', (message) => {
    console.warn(`onMessageArrived:${message.payloadString}`);
    if (callback !== undefined) {
      parseString(message.payloadString, (err, result) => {
        callback(result);
      });
    }
  });
};

react-native-mqtt-new (mqtt, websocket)

import MQTT from 'react-native-mqtt-new';
import { parseString } from 'react-native-xml2js';
import { ToastAndroid } from 'react-native';

/* create mqtt client */
export const messageMq = function (callback) {
  MQTT.createClient({
    uri: 'mqtt://test.mosquitto.org:1883'
  }).then(function(client) {
   
    client.on('closed', function() {
      console.log('mqtt.event.closed');
    });
   
    client.on('error', function(msg) {
      ToastAndroid.show('mqtt连接失败' + msg, ToastAndroid.SHORT);
      console.log('mqtt.event.error', msg);
    });
   
    client.on('message', function(msg) {
      console.log('mqtt.event.message', msg);
      if (callback !== undefined) {
        parseString(msg.payloadString, (err, result) => {
          callback(result);
        });
      }
    });
   
    client.on('connect', function() {
      ToastAndroid.show('mqtt连接成功', ToastAndroid.SHORT);
      client.subscribe('dev', 0);
      // client.publish('/data', "test", 0, false);
    });
   
    client.connect();
  }).catch(function(err){
    ToastAndroid.show('mqtt连接失败', ToastAndroid.SHORT);
  });
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值