Files
push-server/interval/protocol/message.go
R2m1liA 1dbcc03e46 feat: 基本广播服务
- 由Hub接收/push/{topic}的请求并解析信息体广播到对应的Client
2025-12-17 14:49:59 +08:00

40 lines
798 B
Go

package protocol
import (
"encoding/json"
"errors"
)
type ControlMessage struct {
Type MessageType `json:"type"`
Topic Topic `json:"topic,omitempty"`
Topics []Topic `json:"topics,omitempty"`
}
type BroadcastMessage struct {
Type MessageType `json:"type"`
Topic Topic `json:"topic"`
Payload json.RawMessage `json:"payload"`
}
func (m ControlMessage) Validate() error {
switch m.Type {
case MsgInit:
if len(m.Topics) == 0 {
return errors.New("init requires topics")
}
case MsgSubscribe:
if m.Topic == "" {
return errors.New("subscribe requires topic")
}
default:
return errors.New("unknown message type")
}
return nil
}
var (
ErrInvalidMessage = errors.New("invalid message")
ErrPolicyViolation = errors.New("policy violation")
)