contracts/mqtt.go
2024-04-17 14:59:02 +08:00

79 lines
1.8 KiB
Go

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},
}
}