微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Vue.js没有收到mqtt响应消息

如何解决Vue.js没有收到mqtt响应消息

我真的是Vue的新手,为此项目我试图将认值传递给Vue data return()。当前它打印出console.log('INSIDE CLIENT ON MESSAGE")。但是定义为this.room1status = 1的值不会传递或更新为data return room1status。一旦将值1放入room1status内,我是否可以将值1传递给client.on('message',function (topic,message)

脚本

  data(){
    return{
      room1status: ''
      }
   },mounted: function(){
    var mqtt = require('mqtt')
    var client  = mqtt.connect('ws://myUrl/')

    client.on('connect',function () {
      client.subscribe('route_status',function (err) {
        if (!err) {
          client.publish('presence','Hello mqtt')
        }
      })
    })

    client.on('message',message) {

      var filterData = message;
      var x = JSON.parse(filterData);
      console.log('INSIDE CLIENT ON MESSAGE"); /** prints this out succesfully **/
      this.room1status = 1; /** but this does not get passed or updated to data return room1status **/
    }
 }

解决方法

this函数回调中的

on不引用组件实例,因此在调用该回调然后使用它之前,应将this分配给变量vm在里面:

  var vm=this;
  client.on('message',function (topic,message) {

      var filterData = message;
      var x = JSON.parse(filterData);
      console.log('INSIDE CLIENT ON MESSAGE"); 
      vm.room1status = 1; 
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。