首页 > 其他分享 >Vue项目使用MQTT

Vue项目使用MQTT

时间:2024-12-26 10:55:20浏览次数:7  
标签:Vue console err 项目 mqtt MQTT client 连接

Vue项目使用MQTT

1、安装依赖

npm i mqtt@2.18.8 -S

2、页面引用

import mqtt from 'mqtt'

3、客户端

data(){
    return {
        ...
        //定义连接的客户端
        client:null
    }
}

4、建立连接并进行订阅

如果此连接是想跟随页面的加载而连接,那么将方法放在created钩子函数中即可。
connectMqtt () {
      const options = {
        clean: true, // 保留会话
        connectTimeout: 10000, // 超时时间
        reconnectPeriod: 10000, // 重连时间间
        clientId: 'xxxx'+"-"+this.$store.state.user.id+uuid(),//客户端连接的唯一值,如果相同会出现客户端连接抢占的问题
        username: 'Android5043879312294918',//用户名
        password: 'eyJhbGciOiJIUzI1NiJ9.eyJ3NX0.hd-DD1_wCyQVcLTP_R4PqMYygWlebHjFQNTnSjeUuoo',//密码
      }
      //前端连接。需在端口后跟  /mqtt
      /**
      * 前端连接MQTT需使用8083的原因:
      *    后端提供的IP与端口是mqtt协议的,前端在使用mqtt.js库有协议转换,mqtt.js库会自动将mqtt协议转化为ws协议来通过           *    WebSocket连接MQTT服务器。这是客户端库为了兼容Web环境而做的处理。因为浏览器直接不支持mqtt协议,而是通过WebSocket
      *    来实现。EMQX默认是使用的8083和8084分别作为非加密和加密的WebSocket端口。因此此处的8083不是固定的,需根据自身实际
      *    需求,使用ws就用非加密的端口,使用wss就用加密的端口即可。
      */
      this.client = mqtt.connect('ws://192.168.3.5:8083/mqtt', options);
      this.client.on('connect', e => {
        console.log('MQTT连接成功');
        let topic = 'xxx/xxx/xxx';
        this.client.subscribe(topic, {qos: 0}, err => {
          debugger
          if (!err) {
            console.log('订阅成功');
          } else {
            console.log('订阅失败');
          }
        })
      })
      // 信息监听事件
      this.client.on('message', (topic, message) => {
        console.log('收到消息:topic:' +topic + ",消息:" +  message.toString());
      })
      //重连
      this.client.on('reconnect', (err) => {
        console.log('正在进行重连', err);
      })
      //失败
      this.client.on('error', (err) => {
        console.log('连接失败', err);
      })
    },

标签:Vue,console,err,项目,mqtt,MQTT,client,连接
From: https://www.cnblogs.com/jundong2177/p/18632228

相关文章

  • 如何用RACI矩阵提升项目执行力?
    在项目管理中,执行力是决定项目成功与否的关键因素之一。众多项目因缺乏明确的责任分工和有效的沟通机制,导致执行过程混乱、效率低下。RACI矩阵作为一种有力工具,能够清晰地界定项目团队成员的角色和职责,促进项目执行的顺利进行。它如同导航仪,指引着项目团队在复杂的项目环境中明确......
  • 新能源汽车门店管理:项目管理工具的高效运用策略
    使用项目管理工具进行新能源汽车门店管理,可以显著提升门店的运营效率和团队协作能力。以下是一些具体的实施步骤和建议:一、明确项目目标和需求首先,需要明确新能源汽车门店管理的具体目标和需求。这些目标可能包括提高销售额、提升客户满意度、优化服务流程等。根据这些目标,可以......
  • 项目进行中,在质量和进度冲突时,你是如何选择的?
    在项目管理中,质量和进度之间的冲突是一个常见问题。对于前端开发来说,这种冲突同样存在。以下是我面对这种冲突时的选择策略:明确项目目标和优先级:首先,需要明确项目的核心目标和关键成功因素。这有助于确定在质量和进度之间如何权衡。与项目相关方(如产品经理、项目经理等)沟通,......
  • Git Hook在项目中哪些作用?
    GitHook在前端开发项目中的作用主要体现在以下几个方面:代码质量保障:通过GitHook,可以在代码提交前进行一系列的检查,如ESLint代码风格检查、Prettier代码格式化等,确保代码质量符合团队标准。这有助于减少代码中的错误和不一致性,提高代码的可读性和可维护性。提交信息规范:使......
  • 共创力咨询与某上市公司合作的PQA训战项目顺利结项!
    在2025年元旦节来临之际,共创力咨询与某头部GPU公司PQA训战咨询项目圆满落下帷幕。在项目进展过程中,该企业在领导和全体核心组成员的积极推动与咨询团队的高效配合中,形成了体系化的研发质量体系,并形成各BU落地的计划,达成共识,执行落地。为该公司在未来产品质量的提升进一步奠定了......
  • git的项目仓库很大怎么办?如何对其进行瘦身?
    针对git项目仓库过大的问题,可以采取以下一系列措施来进行瘦身:1.识别并移除大文件使用命令查询大文件:通过gitrev-list--objects--all配合其他命令可以查询出仓库中占用空间较大的文件。移除历史中的大文件:使用gitfilter-branch命令或者BFGRepo-Cleaner工具来移除这些大文......
  • 大型项目在css开发过程中是通过什么策略拆分成多个模块的?
    在大型项目的CSS开发过程中,拆分成多个模块的策略主要包括以下几点:模块化设计:首先,根据业务逻辑和功能特点,将整个前端项目划分为若干个独立的模块。每个模块负责一个特定的功能或业务,具有清晰的边界,互不干扰。这种模块化设计有助于降低项目的复杂度,提高代码的可维护性和可复用性。......
  • 基于Springboot + vue实现的学生宿舍信息管理系统
    ......
  • 【项目推荐】搭建自己的个人主页
    你是否想过将自己的简历做成一个单页面的网站?在这个网站上可以自定义你想展示的内容,不只求职信息,求偶信息也可以!试试下面的代码吧。本文首发于微信公众号呼哧好大枫,原作者与本文作者系同一人。项目地址:http://hlt.cab/代码开源地址:中文:https://gitee.com/kkacdbdk/persona......
  • vue3 vite使用postcss-px-to-viewport 实现页面自适应
    三、如何在Vue3中使用postcss-px-to-viewport?首先,我们需要安装相关的插件:npminstallpostcss-px-to-viewport-D在vite.config.js文件中进行配置importvuefrom'@vitejs/plugin-vue'//vite.config.tsimport{defineConfig}from'vite'importAutoImportfrom'......