uni-mqtt-微信小程序连接使用

1.引入mqtt.js

npm install mqtt@3.0.0
如何在uniapp中使用mqtt - Merryan - 博客园 (cnblogs.com)

2.在/utils/mqtt.js中配置连接

export const MQTT_IP = '192.168.9.128:8083/mqtt'//mqtt地址端口
const MQTT_USERNAME = 'public'//mqtt用户名
const MQTT_PASSWORD = 'public'//密码

export const MQTT_OPTIONS = {
    connectTimeout: 5000,
    clientId: '',//不能重复
    username: MQTT_USERNAME,
    password: MQTT_PASSWORD,
    clean: false
}

3.引入mqtt.js

	import {
		MQTT_IP,
		MQTT_OPTIONS
	} from '@/util/mqtt.js'
	var mqtt = require('mqtt/dist/mqtt.js')
	var client

    export default {
		data() {
			return {
				topic: "10001_weight",
				client:{},
				state:1
			}
		},

4.连接mqtt,将连接与data中初始化的变量client绑定,方便后面其他函数方法的使用

//订阅接口 
Connect_Mqtt() {
         
	    this.client = mqtt.connect('wxs://' + MQTT_IP + "/mqtt", MQTT_OPTIONS)		
        
        this.client.on('connect', () => {
					console.log('连接成功!')
					//订阅
					this.client.subscribe(this.topic, (err) => {
						if (!err) {
							console.log('订阅成功!' + err)
						}
					}).on('reconnect', (err) => {
						console.log('正在重连...' + this.topic)
					}).on('end', (err) => {
						console.log('连接断开!')
					}).on('close', function() {
						console.log('断开连接')
					}).on('offline', function() {
						console.log('客户端下线')
					}).on('message', (topic, message) => {
						//收到数据后
						try {
							const data = JSON.stringify(message)
							console.log('接收推送信息:', data)
						} catch (e) {
							console.log("失败Caught: " + e.message)
							//失败关闭订阅
							this.client.unsubscribe(this.topic, () => {
								console.log("已关闭");
							})
						}
					})

				})
			},

5.发布,取消订阅,断开连接(需要重新初始化,否则有可能重连导致相同id冲突)

            dissubscribe() {
				const that = this
				that.client.unsubscribe(this.topic, () => {
					console.log("已取消订阅");
				})
			},
			disconnect(){
				const that = this
					that.client.end();
					console.log("关闭");
					this.client={}
				
			},
			publish(){
				const that = this
				that.client.publish('主题', '这是一条神秘的信息',(error)=>{
				  if (error) {
				    console.log(error)
				  } else {
				    console.log('Published')
				  }
				})
				
			}

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值