web端用mqtt.js订阅了不同的主题,怎么接收?

订阅了不同的主题,怎么判断是哪个主题推送的消息啊?在线急等!!救助大神
关注者
3
被浏览
6,056

2 个回答

你好这个问题解决了吗,我也遇到这个问题了头大

编程相关的问题还是在专业网站上提问比较好,比如说:


言归正传,我是在这篇文章中找到的答案。


假设你的web端使用了 Vue ,接收信息的相关代码和解释如下:

methods: {
  // 创建连接
  createConnection() {
    // 连接字符串, 通过协议指定使用的连接方式
    // ws 未加密 WebSocket 连接
    // wss 加密 WebSocket 连接
    // mqtt 未加密 TCP 连接
    // mqtts 加密 TCP 连接
    // wxs 微信小程序连接
    // alis 支付宝小程序连接
    const { host, port, endpoint, ...options } = this.connection
    const connectUrl = `ws://${host}:${port}${endpoint}`
    try {
      this.client = mqtt.connect(connectUrl, options)
    } catch (error) {
      console.log('mqtt.connect error', error)
    this.client.on('connect', () => {
      console.log('Connection succeeded!')
    this.client.on('error', error => {
      console.log('Connection failed', error)
    // 这里是接收信息的回调函数
    // 这里的 topic 为主题,message 为返回的消息
    this.client.on('message', (topic, message) => {
      this.receiveNews = this.receiveNews.concat(message)
      // 如果订阅多个主题,这里是有关联的
      console.log(`Received message ${message} from topic ${topic}`)
  // 订阅消息
  doSubscribe() {
  // 这里的 topic 可以是 字符串(订阅单个主题)、数组或者对象(订阅多个主题),详见 https://github.com/mqttjs/MQTT.js#subscribe
  const { topic, qos } = this.subscription
  this.client.subscribe(topic, { qos }, (error, res) => {
    if (error) {
    console.log('Subscribe to topics error', error)
    return