protocol

package
v0.4.2-alpha.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 29, 2023 License: MIT Imports: 8 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// PublishKey 与前端(客户端约定的推送关键字)
	PublishKey = "publish"
	// OfflineTopicByUserIdKey 踢除,将用户某个topic踢下线
	OfflineTopicByUserIdKey = "offline_topic_by_userid"
	// OfflineTopicKey 针对某个topic进行踢除
	OfflineTopicKey = "offline_topic"
	// OfflineUserKey 将某个用户踢下线
	OfflineUserKey            = "offline_user"
	SourceClient   FireSource = "client"
	SourceLogic    FireSource = "logic"
	SourceSystem   FireSource = "system"
)

Variables

View Source
var (
	// ErrorClose 连接关闭的错误信息
	ErrorClose = errors.New("firetower is collapsed")
	// ErrorBlock block错误信息
	ErrorBlock = errors.New("network congestion")
)

Functions

This section is empty.

Types

type Brazier

type Brazier interface {
	Extinguished(fire *FireInfo)
	LightAFire() *FireInfo
}

type Coder

type Coder interface {
	Decode([]byte, *FireInfo) error
	Encode(msg *FireInfo) []byte
}

type DefaultCoder

type DefaultCoder struct{}

func (*DefaultCoder) Decode

func (c *DefaultCoder) Decode(data []byte, fire *FireInfo) error

func (*DefaultCoder) Encode

func (c *DefaultCoder) Encode(msg *FireInfo) []byte

type FireInfo

type FireInfo struct {
	Context     FireLife     `json:"c"`
	MessageType int          `json:"t"`
	Message     TopicMessage `json:"m"`
}

FireInfo 接收的消息结构体

func (*FireInfo) Copy

func (f *FireInfo) Copy() FireInfo

type FireLife

type FireLife struct {
	ID        string            `json:"i"`
	StartTime time.Time         `json:"t"`
	ClientID  string            `json:"c"`
	UserID    string            `json:"u"`
	Source    FireSource        `json:"s"`
	ExtMeta   map[string]string `json:"e,omitempty"`
}

FireLife 客户端推送消息的结构体

func (*FireLife) Reset

func (f *FireLife) Reset(source FireSource, clientID, userID string)

type FireSource

type FireSource string

type Pusher

type Pusher interface {
	Publish(fire *FireInfo) error
	Receive() chan *FireInfo
}

type SinglePusher

type SinglePusher struct {
	// contains filtered or unexported fields
}

func DefaultPusher

func DefaultPusher(b Brazier, coder Coder, logger *zap.Logger) *SinglePusher

func (*SinglePusher) Publish

func (s *SinglePusher) Publish(fire *FireInfo) error

func (*SinglePusher) Receive

func (s *SinglePusher) Receive() chan *FireInfo

type TopicMessage

type TopicMessage struct {
	Topic string          `json:"topic"`
	Data  json.RawMessage `json:"data"` // 可能是个json
	Type  string          `json:"type"`
}

TopicMessage 话题信息结构体

func (*TopicMessage) Json

func (s *TopicMessage) Json() []byte

type TowerInfo

type TowerInfo interface {
	UserID() string
	ClientID() string
}

type WebSocketMessage

type WebSocketMessage struct {
	MessageType int
	Data        []byte
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL