vue3.0封装mqtt

307 阅读1分钟

const client: mqtt.MqttClient = mqtt.connect(import.meta.env.VITE_MQTT, {
    connectTimeout: 5000,  // 超时时间
    clientId: Math.random(),
    keepalive: 60,  // 心跳时间
    clean: true,
    username: '12',
    password: '123'
})


// 接收消息
client.on('message', (topic: string, messageData: Buffer) => {
    const message: messageType = JSON.parse(messageData.toString())
    console.log(message)
})

class Mqtt {
    private sendTopic = 'chat/common/pub'
    connect(success?: Function) {
        // 连接mq
        client.on('connect', () => {
            if (success) {
                success()
            }
        })

        return this
    }

    // 订阅mq
    subscribe(topic: string) {
        client.subscribe(topic, (error) => {
            if (error) {
                console.log('subscribe:error---' + error)
            }
        })

        return this
    }


    // 发送消息
    send(message: messageType) {
        const userInfo='123'

        client.publish(this.sendTopic, JSON.stringify(message), {}, (error) => {
            if (!error) {
                //业务逻辑
            } else {
                console.log('send-error', error)
            }
        })
    }
}


// mq出现错误
client.on('error', () => {
    console.log('mq error')
})

client.on('close', function () {
    client.reconnect()
    console.log('重连')
})

export default Mqtt

vue3.0 封装mqtt请求