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请求