1、mqtt一些配置(oss和c4代码里有)
- /**
- * 使用中的配置
- */
- import * as qiniu from 'qiniu-js'
- export const globalConfig = {
- qiniu: {
- getToken: '',
- qiniuUrl: "",
- qiniu_file: "",
- versionList: [],
- qiniuRegion:
- },
- mqtt: {
- connectTimeout: 40000,
- clientId: '',
- username: '',
- password: '',
- clean: true,
- url: "ws://io.st.com/mqtt",
- port: 8083
- },
- lang: "en"
-
- }
- /**
- * 国内配置
- */
- export const cn_config = {
- qiniu: {
- getToken: '',
- qiniuUrl: ",
- qiniu_file: "",
- versionList: [],
- qiniuRegion:
- },
- mqtt: {
- connectTimeout: 40000,
- clientId: '',
- username: '',
- password: '',
- clean: true,
- url: "ws://io.s.com/mqtt",
- port: 8083
- },
- lang: "zh"
-
- }
2、使用mqtt接收信息的文件 ,即以上第一步的文件
- import {
- globalConfig
- } from '@/config/cnSgConfig'
- data() {
- return {
- mqtt: {
- config: globalConfig.mqtt
- },
- deviceId: "",
- cmdList: [],
- client2: '',
- gatewayId2: "",}}
- subscrib(topic) {
- // topic = 'aibox/trash-ai-edge-02/event'
- let that = this
- let mqtt = require('mqtt')
- let now = new Date()
- let number = now.getTime()
- let clientId = 'cid_' + number
- //开启mqtt链接
- this.client2 = mqtt.connect(this.mqtt.config.url, {
- port: this.mqtt.config.port,
- clientId: clientId,
- username: this.mqtt.config.username,
- password: this.mqtt.config.password,
- clean: false
- })
- //监听是否连接成功
- this.client2.on('connect', () => {
- console.log('连接成功!')
- })
- //订阅后端给你发的字段 在on里面接收
- that.client2.unsubscribe([topic])//先取消订阅,防止重复
- that.client2.subscribe([topic], (error, res) => {
- if (error) {
- console.log('订阅失败', error)
- }
- console.log('订阅成功', res)
- })
- //接收消息
- console.log('订阅topic是', topic)
-
- let messagearr = []//该数组要在接收数据前定义,不然容易每次只有最新的数据
-
- //监听订阅的消息,当有消息发过来,该函数便执行 ,回调函数中message则是收到的数据
- that.client2.on('message', (topic, message) => {
- // debugger
- let messageitem = {}
- messageitem = JSON.parse(message.toString())//收到的数据是一堆数字,要toString才能变成想要的样子,如果需要的是对象格式,记得JSON.parse
- console.log('接收到的信息是', messageitem, message.toString())
- //将收到的对象 处理message
- messageitem.time = formatDate(new Date(messageitem.time), 'yyyy-MM-dd HH:mm:ss')
- for (let i = 0; i < that.eventtypes.length; i++) {
- if (that.eventtypes[i].event == messageitem.event[0]) {
- messageitem.event = that.eventtypes[i].eventName
- }
- }
-
- messagearr.push(messageitem)//由于数据是实时的,每次发过来一个对象,需将他们放入数组中使用
- console.log('messageitem', messageitem, 'messagearr', messagearr)
- console.log('arr', messagearr)
- that.message = messagearr
- })
- },