当前位置:   article > 正文

uniapp实现MQTT消息队列传送消息_uniapp mqtt

uniapp mqtt

uniapp安装mqtt和uuid

        在uniapp项目根目录下分别运行安装mqtt和uuid的命令行,因为后面会用uuid生成mqtt的clientId,所以这边就一起安装了。

  1. npm install mqtt@3.0.0
  2. npm install uuid

MQTT公共服务器

        实现MQTT消息队列互传需要服务端和客户端,如果仅是想学习消息是如何传送的,不涉及复杂业务的话,服务端可以使用 MQTT Broker的公共服务器:The Top 1 Free Public MQTT Broker | EMQ (emqx.com)

        使用方法在后面客户端连接时会提到。

MQTT本地搭建服务器

        但是想自己本地搭建MQTT服务器的话,不建议在windows下搭建,超级多错误还没解决办法(大佬请指教)

  1. emqx已经启动,erlang闪退.
  2. 启动失败Node ‘emqx@127.0.0.1’ not responding to pings.
  3. escript: exception error: no match of right hand side value false.

        搭建本地服务器可以自己搜索文章和教程来看。

MQTT客户端下载

        MQTTX 下载

       下载教程可看(81条消息) MQTT 图形化客户端-MQTTX安装使用教程_mqtt x_程序之大道至简的博客-CSDN博客

用户名和密码可以自己设置,也可以不设置

         此时只是单个客户端(订阅者)发送和接收消息,还不算消息互传。所以接下来是uniapp订阅相同的主题。

uniapp代码样例

  1. //在根目录下创建utils文件夹,再创建mqtt.js文件
  2. //mqtt ip是公共服务器的地址
  3. export const MQTT_IP = 'broker.emqx.io:8083/mqtt'//mqtt地址端口
  4. const MQTT_USERNAME = 'public'//mqtt用户名
  5. const MQTT_PASSWORD = 'public'//密码
  6. export const MQTT_OPTIONS = {
  7. connectTimeout: 5000,
  8. clientId: '',
  9. username: MQTT_USERNAME,
  10. password: MQTT_PASSWORD,
  11. clean: false
  12. }
  1. //index.vue的代码
  2. <template>
  3. <view class="content">
  4. {{topic}}
  5. </view>
  6. </template>
  7. <script>
  8. import { v4 } from 'uuid';
  9. import {
  10. MQTT_IP,
  11. MQTT_OPTIONS
  12. } from '@/utils/mqtt.js';
  13. var mqtt = require('mqtt/dist/mqtt.js')
  14. var client
  15. export default {
  16. data() {
  17. return {
  18. topic: 'test-testmqtt' //要订阅的主题,我的是test-testmqtt(如果名字取的简单有可能会收到别人发送的消息)
  19. }
  20. },
  21. mounted() {
  22. this.connect() //连接
  23. console.log(11)
  24. },
  25. methods: {
  26. connect() {
  27. MQTT_OPTIONS.clientId = v4()
  28. var that = this
  29. // #ifdef H5
  30. client = mqtt.connect('ws://' + MQTT_IP, MQTT_OPTIONS)
  31. // #endif
  32. // #ifdef MP-WEIXIN||APP-PLUS
  33. client = mqtt.connect('wx://' + MQTT_IP, MQTT_OPTIONS)
  34. // #endif
  35. client.on('connect', function() {
  36. console.log('连接成功')
  37. client.subscribe(that.topic, function(err) {
  38. if (!err) {
  39. console.log('订阅成功')
  40. }
  41. })
  42. }).on('reconnect', function(error) {
  43. console.log('正在重连...', that.topic)
  44. }).on('error', function(error) {
  45. console.log('连接失败...', error)
  46. }).on('end', function() {
  47. console.log('连接断开')
  48. }).on('message', function(topic, message) {
  49. // console.log(topic, message)
  50. console.log('接收推送信息:', message.toString())
  51. })
  52. }
  53. }
  54. }
  55. </script>
  56. <style>
  57. </style>

         这个时候uniapp运行起来就能在终端看见

        然后在mqttx发送消息,终端就会收到

         此时两个订阅者之间能消息互通就实现了。

 本文参考了

(81条消息) uniapp连接MQTT_uniapp mqtt_啟大大的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/824678?site
推荐阅读
相关标签
  

闽ICP备14008679号