React Native中使用Mqtt

环境:

1,在项目中安装包

npm install react-native-native-mqtt --save

 项目GitHub地址 https://github.com/davesters/rn-native-mqtt

2,在本地搭建Mqtt服务器

这里使用的EMQ来搭建Mqtt服务器

EMQ官网:https://www.emqx.io/cn/

点击右上角的免费试用

然后下载Windows版,也有其他操作系统的,都可以在官网找到安装方法

下载完成之后,解压到没有中文的路径中

现在还不能直接使用,需要下载License

在下载的下面有

 我们使用免费30天的测试就可以了,如果需要正式使用,需要购买企业版或者公司服务器上自己搭建一个Mqtt服务器

下载完成之后将License中的所有文件放到emqx\bin目录下

然后在bin目录下打开命令行(可以在bin目录下按住shift然后点击鼠标右键),选择在此处打开PowerShell窗口

然后运行  .\emqx start开启服务,注:  .\emqx stop 关闭服务

然后在浏览器中访问http://127.0.0.1:18083 应该就可以进入控制台界面

账号默认为:admin

密码默认为:public

3,在RN程序中创建会话,发布者和订阅者(参照react-native-native-mqtt)这个包中的写法

这里的192.168.1.9 请替换成自己电脑的IP地址,且需要保证测试Android设备和电脑在同一个无线网络下,

如果无法连接至服务器,可能是防火墙的问题,需要把电脑的防火墙打开

import React, { Component } from 'react';
import {
  View,
  Text
} from 'react-native';
import * as Mqtt from 'react-native-native-mqtt';
import { Buffer } from 'buffer'

const client = new Mqtt.Client('tcp://192.168.1.9:1883');

class BottomPage2 extends Component {
  constructor(props) {
    super(props);
    this.handlePublic = this.handlePublic.bind(this);
  }
  render () {
    return (
      <View>
        <Text onPress={this.handlePublic} style={{ fontSize: 65 }}>发布信息</Text>
      </View>
    )
  }

  componentDidMount() {
    this.handleMqttStart();
  }

  componentWillUnmount() {
    this.handleMqttClose();
  }

  handleMqttStart() {
    client.connect({
      clientId: '1001',
      username: "ReSword",
      password: "0831"
    }, err => {
      console.log(err);
    });

    client.on(Mqtt.Event.Message, (topic, message) => {
      console.log('Mqtt Message:', topic, message.toString());
    });
    
    client.on(Mqtt.Event.Connect, () => {
      console.log('MQTT Connect');
      client.subscribe(['Test'], [0]);
    });
  }

  handleMqttClose() {
    client.disconnect();
    client.close();
  }

  handlePublic() {
    const buf = Buffer.from('runoob', 'ascii');
    client.publish("Test", buf);
  }

}

export default BottomPage2;

点击发布信息

就可以收到来自本机的信息了

参考文章:

https://www.jianshu.com/p/e5cf0c1fd55c

https://www.runoob.com/w3cnote/mqtt-intro.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React Native 的路由可以使用以下几个库来实现: 1. React Navigation:React Navigation 是 React Native 最流行的路由库之一,它提供了多种路由类型和导航器,例如 Stack Navigator(堆栈导航)、Tab Navigator(标签导航)和 Drawer Navigator(抽屉导航)等。 2. React Native Navigation:React Native Navigation 是一个由 Wix 开发的路由库,它提供了原生级别的性能和体验。它支持多个平台,并且提供了多种导航器及其配置选项。 3. React Native Router Flux:React Native Router Flux 是一个基于 React Navigation 的路由库,它提供了类似于 React Router 的 API,使用起来比较方便。 下面是一个使用 React Navigation 的示例: 首先安装 React Navigation: ``` npm install @react-navigation/native ``` 然后安装 Stack Navigator: ``` npm install @react-navigation/stack ``` 在 App.js 配置 Stack Navigator: ```javascript import { NavigationContainer } from '@react-navigation/native'; import { createStackNavigator } from '@react-navigation/stack'; import HomeScreen from './screens/HomeScreen'; import DetailScreen from './screens/DetailScreen'; const Stack = createStackNavigator(); function App() { return ( <NavigationContainer> <Stack.Navigator> <Stack.Screen name="Home" component={HomeScreen} /> <Stack.Screen name="Detail" component={DetailScreen} /> </Stack.Navigator> </NavigationContainer> ); } export default App; ``` 在 HomeScreen.js 实现页面跳转: ```javascript import React from 'react'; import { Button } from 'react-native'; import { useNavigation } from '@react-navigation/native'; function HomeScreen() { const navigation = useNavigation(); return ( <Button title="Go to detail screen" onPress={() => { navigation.navigate('Detail'); }} /> ); } export default HomeScreen; ``` 在 DetailScreen.js 实现返回: ```javascript import React from 'react'; import { Button } from 'react-native'; import { useNavigation } from '@react-navigation/native'; function DetailScreen() { const navigation = useNavigation(); return ( <Button title="Go back" onPress={() => { navigation.goBack(); }} /> ); } export default DetailScreen; ``` 这样就完成了一个简单的路由示例,点击 HomeScreen 上的按钮可以跳转到 DetailScreen,DetailScreen 上的按钮可以返回 HomeScreen。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值