Documentation
¶
Index ¶
- Variables
- type Broker
- func (b *Broker) Accept(transport Transport) (Peer, error)
- func (b *Broker) Broadcast(msg *Message)
- func (b *Broker) CreateRoom() *Room
- func (b *Broker) Events() *eventBus
- func (b *Broker) JoinRoom(roomID string, p Peer) error
- func (b *Broker) LeaveRoom(p Peer)
- func (b *Broker) Peer(id string) Peer
- func (b *Broker) Peers() []Peer
- func (b *Broker) Room(id string) *Room
- func (b *Broker) Rooms() map[string]*Room
- func (b *Broker) SendTo(peerID string, msg *Message) error
- func (b *Broker) SendToRoom(roomID string, msg *Message, exclude Peer)
- func (b *Broker) Start(ctx context.Context)
- func (b *Broker) Stop() error
- type Event
- type EventHandler
- type EventType
- type Handler
- type Message
- type Option
- type Options
- type Peer
- type Room
- type Transport
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrPeerNotFound 连接未找到 ErrPeerNotFound = errors.New("peer not found") // ErrRoomNotFound 房间未找到 ErrRoomNotFound = errors.New("room not found") // ErrBrokerClosed 代理已关闭 ErrBrokerClosed = errors.New("broker is closed") // ErrSendBufferFull 发送缓冲区已满 ErrSendBufferFull = errors.New("send buffer full") // ErrInvalidPeer 无效的连接 ErrInvalidPeer = errors.New("invalid peer: not created by this broker") // ErrPeerClosed 连接已关闭 ErrPeerClosed = errors.New("peer is closed") )
Functions ¶
This section is empty.
Types ¶
type Broker ¶
type Broker struct {
// contains filtered or unexported fields
}
Broker 中间人
func (*Broker) SendToRoom ¶
SendToRoom 发送消息给一个房间
type Handler ¶
type Handler interface {
// HandleMessage 处理消息
HandleMessage(from Peer, msg *Message)
// HandleDisconnect 处理断开连接
HandleDisconnect(from Peer)
}
Handler 处理器
type Message ¶
type Message struct {
Type string `json:"type"`
Payload map[string]any `json:"payload"`
To string `json:"to,omitempty"`
}
Message 消息
func UnmarshalMessage ¶
UnmarshalMessage 消息反序列化
type Option ¶
type Option func(*Options)
Option 选项
func WithPeerIDGenerator ¶
WithPeerIDGenerator 使用自定义的连接 ID 生成器
func WithRoomAutoCleanup ¶
WithRoomAutoCleanup 使用自定义的房间自动清理设置
type Options ¶
type Options struct {
Logger logger.Logger
SendBufSize int
ChannelBufSize int
MaxMessageSize int
PeerIDGenerator func() string
RoomAutoCleanup bool
}
Options 代理选项
type Peer ¶
type Peer interface {
ID() string
RoomID() string
RemoteAddr() string
Metadata() map[string]any
SetMetadata(key string, value any)
Send(msg *Message) error
Close() error
}
Peer 代表一个连接
Source Files
¶
Click to show internal directories.
Click to hide internal directories.