RN集成MQTT(react_native_mqtt)消息推送

作者: ThisisSparta | 来源:发表于2018-11-21 10:29 被阅读10次

         先说一下我们公司的项目吧,我们公司做了一个“智能家居App”,就是把一些智能设备接入到App当中,什么智能音响,智能门锁,智能空调啊,然后用App的控制,因为接入的设备太多了,每个设备又对应了很多个控制面板,所以领导想尝试用RN做面板,第一个尝试,就是接入一款空调设备,App连上空调后(这款是用蓝牙连接的),通过App发命令调节温度什么的,通过MQTT接收推送,刷新页面(毕竟空调也能用原装遥控器嘛,遥控起调节了温度,App上的页面肯定要刷新的,不然就不同步了),好了,说了这么废话,进入正题吧.

       查了一下RN集成MQTT的话需要引入(react_native_mqtt)这个库,方法比较简单

    1 npm install react_native_mqtt --save

    2 import init from 'react_native_mqtt';

    3 import { AsyncStorage } from 'react-native';

    4 配一些参数,按他的来就行了

    5 然后就是连接了

    说说上面的4个参数吧

    1 地址 需要跟后台确认

    2 端口号 需要跟后台确认(比较重要)

    3  path 这里可不填 默认是 '/mqtt'. 但是我们不是(真是坑,) 所以我这里填了空 后面说

    4 clientId 订阅的设备ID 因为我们的设备比较多,这个是后台自己命名的,找后台要

    然后就是发起连接

    client.connect

    然后就会调用几个方法

    第一个onConnect,连接上就会调用

    client.subscribe就是非常重要的订阅方法了 里面需要传订阅的主题,前面说的我司的path不是/mqtt 是/SH/S2H,后面跟的这个参数是订阅的“主题号”跟前面的clientID不是一回事,需要跟后台确认,一定要填,不然收不到推送,因为没有订阅到指定的主题.

    订阅成功后

    onMessageArriver 就是接受推送的方法了

    以上就是收命令推送的方法了

    下面就是发命令了

    我司的发命令没有通过 client.messge这个方法去发,而是用的普通的http调接口去发的

    使用fetch请求,因为我们是GET所以把参数拼在了url后面,做的拼接.然后就完事了

    相关文章

      网友评论

        本文标题:RN集成MQTT(react_native_mqtt)消息推送

        本文链接:https://www.haomeiwen.com/subject/poltqqtx.html