React Native 上的 MQTT?
Posted
技术标签:
【中文标题】React Native 上的 MQTT?【英文标题】:MQTT on React Native? 【发布时间】:2016-03-02 17:02:56 【问题描述】:在将 MQTT 添加到我拥有的 react-native 项目时,我很难找到正确的方法。该项目需要在 ios 和 android 上运行,因此理想情况下 MQTT 可以在 javascript 端处理。我意识到网络巢穴从移动节点到经典节点是不同的,所以我开始了分叉 MQTT.js 的路线,并遇到了一个又一个的障碍。
我应该继续分叉 MQTT.js 吗?我是否应该使用 polyfill 或其他方式在移动环境中复制节点环境?我应该分解并获得一个客观的 C 库和一个 Java 库并将它们包装起来吗?
【问题讨论】:
我想我最大的担忧是,我们应该使用 js 解决方案还是 mqtt 的原生模块解决方案? JS 解决方案是否会淹没 react-native 桥并使我们的应用程序变慢? 【参考方案1】:我做了一些研究,看起来要走的路是使用本机 (tcp) mqtt,而不是 websockets 上的 mqtt(尽管你可以两者都做)。
道路没有铺好,所以在查看了我们所有的选项后,我最终修改了 tuanpmt/react-native-mqtt 以使库更稳定,现在正在生产中使用它。
你去:https://github.com/SudoPlz/sp-react-native-mqtt
这是本机 mqtt(使用 iOS 和 Android mqtt 库),而不是需要奇怪的配置和导入才能与 react-native 一起使用的 websockets js 库。我会说这是你现在最好的选择。
npm install sp-react-native-mqtt
然后按照自述文件中的步骤使用即可。
试试看。
【讨论】:
这应该是公认的答案,因为所有其他库已弃用或正在使用 websocket 连接到代理。我花了 1 天的时间搜索和理解为什么所有其他库都不起作用。 subscribe(topic, qos) 函数中 qos 的可能值是什么。【参考方案2】:在真正需要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!
【讨论】:
【参考方案3】:我在 Android 和 iOS 上使用 react-native-mqtt 都取得了一定的成功。它只是桥接每个平台的原生模块,Android 上的 Paho 和 iOS 上的 MQTTClient。
【讨论】:
我试试看。谢谢! 我建议你使用github.com/rusfearuth/react-native-mqtt,因为原始库使用了不推荐使用的 API,并且本机代码中存在错误,并且还没有准备好生产) @Rusfearuth ,设法安装和运行你的库,但我不断收到以下错误:'mqtt.event.error','连接丢失!连接丢失 (32109) - java.io.EOFException' 然后它再次连接和断开连接,这种情况每秒左右发生一次。可能是由于它没有得到维护,图书馆不再准备好了吗? 问题出在我的 client_id 上,可以使用空的 client_id 进行测试。但主要问题仍然有效,现在这个库维护最多的分支是什么?以上是关于React Native 上的 MQTT?的主要内容,如果未能解决你的问题,请参考以下文章
SyntaxError - node_modules/react-native/Libraries/polyfills/error-guard.js:缺少分号。 (14:4) 在 react nati