38 lines
881 B
TypeScript
38 lines
881 B
TypeScript
import MQTT from '@/utils/mqtt'
|
|
import type { OnMessageCallback } from 'mqtt'
|
|
import { onUnmounted, ref } from 'vue'
|
|
|
|
export default function useMqtt() {
|
|
const PublicMqtt = ref<MQTT | null>(null)
|
|
|
|
const startMqtt = (val: string, callback: OnMessageCallback) => {
|
|
// set mqtt topic
|
|
PublicMqtt.value = new MQTT(val)
|
|
// init mqtt
|
|
PublicMqtt.value.init()
|
|
// link mqtt
|
|
PublicMqtt.value.link()
|
|
getMessage(callback)
|
|
}
|
|
|
|
const publish = (topic: string, message: string) => {
|
|
PublicMqtt.value?.publish(topic, message)
|
|
}
|
|
|
|
const getMessage = (callback: OnMessageCallback) => {
|
|
// PublicMqtt.value?.client.on('message', callback);
|
|
PublicMqtt.value?.get(callback)
|
|
}
|
|
onUnmounted(() => {
|
|
if (PublicMqtt.value) {
|
|
PublicMqtt.value.unsubscribes()
|
|
PublicMqtt.value.over()
|
|
}
|
|
})
|
|
|
|
return {
|
|
startMqtt,
|
|
publish,
|
|
}
|
|
}
|