| 12345678910111213141516171819202122232425262728293031 |
- import { connect, disconnect, listen, publish } from '@kuyoonjo/tauri-plugin-mqtt'
- import { injectable, Service } from './service'
- import useStore from '@/store/index'
- /**
- * MQTT服务
- */
- @injectable
- export default class MqttService extends Service {
- private store = useStore()
- async connect(url: string, name: string, room: string) {
- const mqttUrl = url.replace(/(\/\/)/, `$1${room}:${name}@`)
- await connect(this.store.mqtt_client_id, mqttUrl)
- }
- async send(params: string) {
- await publish(this.store.mqtt_client_id, this.store.mqtt_channel, 1, false, params)
- }
- async disconnect() {
- await disconnect(this.store.mqtt_client_id)
- }
- async listen(callback: (data: any) => void) {
- await listen(client => {
- // if(client.payload)
- // 如果断开连接,如果有订阅需要取消订阅,然后重新连接
- callback(client.payload)
- })
- }
- }
|