package contracts import "github.com/samber/do" type MqttService interface { Start() error Stop() error Restart() error // 消息推送 // @param topic 订阅的主题 // @param msg 传递的消息 // @param retain 是否保留 // @param qos 传递的消息, // 0: 至多一次, 如果发送失败,也就算了 // 1: 至少一次, 消息将确保至少被传递一次,但可能会重复发送 // 2: 确保只有一次, 确保消息仅被传递一次且没有重复传递 Publish(topic string, msg any, retain bool, qos byte) error // 关闭消息队列 Close(origin string) } type Mqtt interface { Controller // 链接 // OnConnect(g GlobalParams, topic string) error // 断开链接 // OnDisconnect(g GlobalParams, topic string) error // 订阅事件 OnSubscribed(g GlobalParams, topic string) error // 取消订阅事件 OnUnsubscribed(g GlobalParams, topic string) error // 消息发布事件 OnMessage(g GlobalParams, topic string) error // 保留类型消息事件 OnRetainMessage(g GlobalParams, topic string) error // Qos消息完成事件 OnQosMessage(g GlobalParams, topic string) error // 客户端超时事件 OnClientExpired(GlobalParams) error // 保留消息超时事件 OnRetainedExpired(g GlobalParams, topic string) error } type MqttHandle struct { Controller } func (this MqttHandle) OnSubscribed(g GlobalParams, topic string) error { return nil } func (this MqttHandle) OnUnsubscribed(g GlobalParams, topic string) error { return nil } func (this MqttHandle) OnMessage(g GlobalParams, topic string) error { return nil } func (this MqttHandle) OnRetainMessage(g GlobalParams, topic string) error { return nil } func (this MqttHandle) OnQosMessage(g GlobalParams, topic string) error { return nil } func (this MqttHandle) OnClientExpired(g GlobalParams) error { return nil } func (this MqttHandle) OnRetainedExpired(g GlobalParams, topic string) error { return nil } func NewMqttController(container *do.Injector) Mqtt { return &MqttHandle{ Controller: &BaseController{container}, } }