MQtt+vue,完成及时通讯

1、下载mqtt.js

npm install mqtt --save

2、配置mqtt账号、密码、请求链接
//MQtt.js
export const MQTTIP = "wss:xxxxxxxxxxxx";   //聊天接口
export const USERNAME = "admin";     //账号
export const PASSWORD = "admin";		//密码
3、在需要的页面引入
//xxx.vue
import mqtt from "mqtt";
import { MQTTIP,USERNAME, PASSWORD } from "../../utils/MQtt";
function S() {
  return (((1 + Math.random()) * 0x10000) | 0).toString(32).substring(1);
}
let MathRandom =
  S() + S() + "-" + S() + "-" + S() + "-" + S() + "-" + S() + S() + S();
let MqttUserId = "clientid-" + MathRandom;

var client;
const options = {
  connectTimeout: 40000,  //链接超时时间
  clientId: MqttUserId,      //这个id最好的是随机的
  username: USERNAME,  //账号
  password: PASSWORD,  //密码
  clean: true,    
  keepalive: 24000  //心跳
};
client = mqtt.connect(MQTTIP, options);
export default {
 data() {
    return {
      mtopic: "xxxxxxx",   //订阅的主题
  },
   created() {
    this.myMqtt();
  },
  methods: {
    // 获取当前消息
    myMqtt() {
      // 连接mqtt
      client.on("connect", e => {
        console.log("连接成功");
        client.subscribe(this.mtopic, err => {
          if (!err) {
            console.log("订阅成功:" + this.mtopic);
          }
        });
      });
      // 接收推送消息
      client.on("message", (topic, message) => {
      //这里会打印三次,导致下面调用接口的时候回调三次,做了一个处理,反正问题解决了,不知道是不是自己的方法用错了
        for (var i = 0; i < 1; i++) {
          console.log("接收推送信息:", message.toString(), "主题", topic); 
        }
      });
      // 断开发起重连
      client.on("reconnect", error => {
        console.log("正在重连...", error);
      });
      // 链接异常处理
      client.on("error", error => {
        console.log("连接失败...", error);
      });
    },
	}
	//发送消息
	 handleclick: function() {
      this.client.publish(this.mtopic, xxxx(这里是回复的消息));
    }
}
下面是完成的截图(其中需要聊天记录接口以及聊天列表的list接口,然后做两次监听,一个监听列表一个监听当前聊天窗口)

在这里插入图片描述

以上。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值