React Native上的MQTT?

问题描述:

当我将MQTT添加到反应原生项目时,我很难找出正确的方法。该项目需要在iOS和Android上运行,因此理想情况下可以在JavaScript端处理MQTT。我意识到网络巢穴不同于移动到经典节点,所以我开始分叉MQTT.js的路线,并在路障后碰到路障。React Native上的MQTT?

我应该继续分叉MQTT.js吗?我是否应该使用polyfills或其他方式来复制移动环境中的节点环境?我应该分解并获得一个客观的C库和一个Java库并包装它们吗?

我在Android和iOS上都使用react-native-mqtt取得了中等成功。它只是跨越每个平台的本机模块,Android上的Paho和iOS上的MQTTClient

+0

我会试试这个。谢谢! –

+1

我建议您使用https://github.com/rusfearuth/react-native-mqtt,因为原始库使用不赞成使用的API,并且在本机代码中存在错误,并且它不是生产准备好的) – Rusfearuth

如果您的代理通过Websockets支持MQTT,那么您可以使用Paho javascript库,并将其视为普通的Web应用程序(假设反应原生应用程序只是一个web浏览器的本机包装)。

+1

反应本土不在身边网页视图的包装,它运行在核心JS在电话中并拉起真正的本地组件。据说我可以拉起一个webview组件并运行paho,然后将它报告回来,但是猜测这会有点破解,我不知道从webview的JS执行到核心JS的管道是什么执行看起来像。 –

+0

@Paul Caponetti - 请你再解释一下吗?如果react-native支持web套接字,为什么Paho JS不能正确运行?它是否依赖于浏览器中包含的某些I/O组件,但不反应本机? – Charlie

+0

@charlie。浏览器和节点使用他们自己的方式来打开一个套接字,反应本地使用他们自己的实现,它与节点或浏览器的网络层不兼容。 –

在确实需要react-native-mqtt工作并未能正确配置之后,唉,我发现react_native_mqtt。是的,他们看起来一样,但相信我,他们是不同的。

在这个模块中,你不必为了获得这个工作而与Podfiles(ios)或MainActivity.java或MainApplication.java(android)文件纠缠在一起。所有你需要做的就是包含它。

,并按照instructions

import { initMqtt } from 'react_native_mqtt'; 
import { AsyncStorage } from 'react-native'; 

... your awesome code below!