uniapp app端对接mqtt 接收消息推送

1.安装

npm install mqtt@3.0.0

2.引入

var mqtt = require('mqtt/dist/mqtt');

3.具体连接代码,包含接受到消息后推送到系统通知栏func

connect() {
			var that = this;
			let url; //mqtt地址端口
			if (process.env.NODE_ENV === 'development') {
				url = 'ip:端口/mqtt';
			} 
			let clientId;
			if (process.env.VUE_APP_PLATFORM === 'h5') {
				clientId = '22222222';
			} else {
				clientId = plus.push.getClientInfo().clientid;//获取客户端推送标识信息
			}

			//配置项
			const options = {
				connectTimeout: 50000,
				clientId, //唯一ID
				keepalive: 60,// 60秒,设置为0禁用(心跳包发送周期)
				qos: 1,//消息等级
				resubscribe: true//如果连接断开并重新连接,订阅的主题将自动重新订阅(默认为true)
				// clean: true
			};
			let client;
			// #ifdef H5
			client = mqtt.connect(
				'ws://' + url,
				options
			);
			// #endif
			//app的连接是 'wx://' + url。
			//#ifdef MP-WEIXIN||APP-PLUS

			client = mqtt.connect(
				'wx://' + url,
				options
			);
			// #endif
			client
				.on('connect', function() {
					console.log('连接成功');
					//topic 这是订阅主题名称 
					//opic 命名不可以有/否则app端订阅成功会接收不到消息,之前被这个坑了,mqtt官方推荐的是/
					client.subscribe(`topic`, function(err) {
						if (!err) {
							console.log('topic订阅成功');
						}
					});
				})
				.on('reconnect', function(error) {
					console.log('正在重连...', error);
				})
				.on('error', function(error) {
					console.log('连接失败...', error);
				})
				.on('end', function() {
					console.log('连接断开');
				})
				.on('message', function(topic, message) {
					console.log(message, 1234);
					if (message) {
						that.sentSystemMessage(message.toString());
					}

					// 统一接受信息。 topic 是订阅的主题名称,message是监听信息的接收和发送都能接收
				});
		},
		//发送系统消息
		sentSystemMessage(data) {
			let message = JSON.parse(data);
			plus.push.createMessage(message.msg, message.option);
			// 使用5+App的方式进行监听消息推送 消息通知栏点击
			plus.push.addEventListener(
				'click',
				function(receive) {
					//删除已点击消息
					plus.push.remove(receive);
				},
				false
			);
		}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值