package contracts import "github.com/samber/do" type Mqtt 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 MqttController interface { Controller // 订阅事件 OnSubscribed(GlobalParams) error // 取消订阅事件 OnUnsubscribed(GlobalParams) error // 消息发布事件 OnMessage(GlobalParams) error // 保留类型消息事件 OnRetainMessage(GlobalParams) error // Qos消息完成事件 OnQosMessage(GlobalParams) error // 客户端超时事件 OnClientExpired(GlobalParams) error // 保留消息超时事件 OnRetainedExpired(GlobalParams) error } type MqttHandleController struct { Controller } func (this MqttHandleController) OnSubscribed(g GlobalParams) error { return nil } func (this MqttHandleController) OnUnsubscribed(g GlobalParams) error { return nil } func (this MqttHandleController) OnMessage(g GlobalParams) error { return nil } func (this MqttHandleController) OnRetainMessage(g GlobalParams) error { return nil } func (this MqttHandleController) OnQosMessage(g GlobalParams) error { return nil } func (this MqttHandleController) OnClientExpired(g GlobalParams) error { return nil } func (this MqttHandleController) OnRetainedExpired(g GlobalParams) error { return nil } func NewMqttController(container *do.Injector) MqttController { return &MqttHandleController{ Controller: &BaseController{container}, } }