Documentation
¶
Index ¶
- Variables
- type Client
- func (c *Client) Close()
- func (c *Client) Connect() error
- func (c *Client) JoinChannel(channel string) error
- func (c *Client) LeaveChannel(channel string) error
- func (c *Client) OnEventType(event string, handler func(msg *Message))
- func (c *Client) OnMessageType(msgType string, handler func(msg *Message))
- func (c *Client) Send(msg *Message) error
- func (c *Client) SendEvent(event string, data interface{}) error
- func (c *Client) SendToChannel(channel string, event string, data interface{}) error
- type Connection
- func (c *Connection) Close()
- func (c *Connection) GetChannels() []string
- func (c *Connection) GetMetadata(key string) (interface{}, bool)
- func (c *Connection) IsInChannel(channel string) bool
- func (c *Connection) JoinChannel(channel string)
- func (c *Connection) LeaveChannel(channel string)
- func (c *Connection) SendMessage(msg *Message) error
- func (c *Connection) SetMetadata(key string, value interface{})
- type Manager
- func (m *Manager) AddConnectionToChannel(conn *Connection, channel string)
- func (m *Manager) Broadcast(msg *Message)
- func (m *Manager) BroadcastToChannel(channel string, msg *Message) error
- func (m *Manager) BroadcastToUser(userID string, msg *Message)
- func (m *Manager) GetChannelConnections(channel string) ([]*Connection, error)
- func (m *Manager) GetChannels() []string
- func (m *Manager) GetConnection(id string) (*Connection, error)
- func (m *Manager) GetConnections() []*Connection
- func (m *Manager) GetConnectionsByUserID(userID string) []*Connection
- func (m *Manager) HandleRequest(w http.ResponseWriter, r *http.Request)
- func (m *Manager) RemoveConnection(conn *Connection)
- func (m *Manager) RemoveConnectionFromChannel(conn *Connection, channel string)
- func (m *Manager) SetAfterConnect(fn func(conn *Connection))
- func (m *Manager) SetAfterDisconnect(fn func(conn *Connection))
- func (m *Manager) SetAuthFunc(fn func(r *http.Request) (string, map[string]interface{}, error))
- func (m *Manager) SetBeforeConnect(fn func(r *http.Request) bool)
- func (m *Manager) SetBeforeDisconnect(fn func(conn *Connection))
- func (m *Manager) SetMessageHandler(fn func(conn *Connection, msg *Message) error)
- func (m *Manager) SetUpgrader(upgrader websocket.Upgrader)
- type Message
Constants ¶
This section is empty.
Variables ¶
var ( // ErrConnectionClosed 连接已关闭错误 ErrConnectionClosed = errors.New("websocket: 连接已关闭") // ErrConnectionNotFound 连接未找到错误 ErrConnectionNotFound = errors.New("websocket: 连接未找到") // ErrInvalidMessage 无效消息错误 ErrInvalidMessage = errors.New("websocket: 无效的消息") // ErrChannelNotFound 频道未找到错误 ErrChannelNotFound = errors.New("websocket: 频道未找到") // DefaultUpgrader 默认的WebSocket升级器 DefaultUpgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, CheckOrigin: func(r *http.Request) bool { return true }, } )
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// URL WebSocket服务器URL
URL string
// Connection 当前连接
Connection *websocket.Conn
// AuthToken 认证令牌
AuthToken string
// Closed 客户端是否已关闭
Closed bool
// OnConnect 连接建立回调
OnConnect func()
// OnDisconnect 连接断开回调
OnDisconnect func(err error)
// OnMessage 接收消息回调
OnMessage func(msg *Message)
// OnError 错误回调
OnError func(err error)
// MessageHandlers 特定消息类型处理器
MessageHandlers map[string]func(msg *Message)
// EventHandlers 特定事件处理器
EventHandlers map[string]func(msg *Message)
// ReconnectInterval 重连间隔
ReconnectInterval time.Duration
// MaxReconnectAttempts 最大重连尝试次数
MaxReconnectAttempts int
// contains filtered or unexported fields
}
Client WebSocket客户端
func (*Client) OnEventType ¶
OnEventType 注册特定事件处理器
func (*Client) OnMessageType ¶
OnMessageType 注册特定消息类型处理器
type Connection ¶
type Connection struct {
// ID 连接唯一标识
ID string
// UserID 用户ID,可选
UserID string
// Socket 原始WebSocket连接
Socket *websocket.Conn
// Manager 所属的管理器
Manager *Manager
// Channels 已加入的频道列表
Channels map[string]bool
// SendChan 发送消息的通道
SendChan chan *Message
// Closed 连接是否已关闭
Closed bool
// Metadata 连接元数据,可存储任意信息
Metadata map[string]interface{}
// contains filtered or unexported fields
}
Connection WebSocket连接封装
func (*Connection) GetChannels ¶
func (c *Connection) GetChannels() []string
GetChannels 获取连接已加入的所有频道
func (*Connection) GetMetadata ¶
func (c *Connection) GetMetadata(key string) (interface{}, bool)
GetMetadata 获取连接元数据
func (*Connection) IsInChannel ¶
func (c *Connection) IsInChannel(channel string) bool
IsInChannel 检查连接是否在指定频道中
func (*Connection) LeaveChannel ¶
func (c *Connection) LeaveChannel(channel string)
LeaveChannel 离开频道
func (*Connection) SendMessage ¶
func (c *Connection) SendMessage(msg *Message) error
SendMessage 发送消息到连接
func (*Connection) SetMetadata ¶
func (c *Connection) SetMetadata(key string, value interface{})
SetMetadata 设置连接元数据
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager WebSocket连接管理器
func (*Manager) AddConnectionToChannel ¶
func (m *Manager) AddConnectionToChannel(conn *Connection, channel string)
AddConnectionToChannel 将连接添加到频道
func (*Manager) BroadcastToChannel ¶
BroadcastToChannel 向特定频道的所有连接广播消息
func (*Manager) BroadcastToUser ¶
BroadcastToUser 向特定用户的所有连接广播消息
func (*Manager) GetChannelConnections ¶
func (m *Manager) GetChannelConnections(channel string) ([]*Connection, error)
GetChannelConnections 获取频道中的所有连接
func (*Manager) GetConnection ¶
func (m *Manager) GetConnection(id string) (*Connection, error)
GetConnection 获取指定ID的连接
func (*Manager) GetConnections ¶
func (m *Manager) GetConnections() []*Connection
GetConnections 获取所有连接
func (*Manager) GetConnectionsByUserID ¶
func (m *Manager) GetConnectionsByUserID(userID string) []*Connection
GetConnectionsByUserID 获取指定用户ID的所有连接
func (*Manager) HandleRequest ¶
func (m *Manager) HandleRequest(w http.ResponseWriter, r *http.Request)
HandleRequest 处理WebSocket连接请求
func (*Manager) RemoveConnection ¶
func (m *Manager) RemoveConnection(conn *Connection)
RemoveConnection 移除并关闭连接
func (*Manager) RemoveConnectionFromChannel ¶
func (m *Manager) RemoveConnectionFromChannel(conn *Connection, channel string)
RemoveConnectionFromChannel 从频道中移除连接
func (*Manager) SetAfterConnect ¶
func (m *Manager) SetAfterConnect(fn func(conn *Connection))
SetAfterConnect 设置连接后钩子
func (*Manager) SetAfterDisconnect ¶
func (m *Manager) SetAfterDisconnect(fn func(conn *Connection))
SetAfterDisconnect 设置断开连接后钩子
func (*Manager) SetAuthFunc ¶
SetAuthFunc 设置认证函数
func (*Manager) SetBeforeConnect ¶
SetBeforeConnect 设置连接前钩子
func (*Manager) SetBeforeDisconnect ¶
func (m *Manager) SetBeforeDisconnect(fn func(conn *Connection))
SetBeforeDisconnect 设置断开连接前钩子
func (*Manager) SetMessageHandler ¶
func (m *Manager) SetMessageHandler(fn func(conn *Connection, msg *Message) error)
SetMessageHandler 设置消息处理函数
func (*Manager) SetUpgrader ¶
SetUpgrader 设置WebSocket升级器
type Message ¶
type Message struct {
// Type 消息类型 (如"chat", "notification", "system"等)
Type string `json:"type"`
// Event 事件名称 (如"message.sent", "user.joined"等)
Event string `json:"event"`
// Channel 频道名称
Channel string `json:"channel,omitempty"`
// Data 消息数据
Data interface{} `json:"data,omitempty"`
// SenderID 发送者ID
SenderID string `json:"sender_id,omitempty"`
// Timestamp 时间戳
Timestamp int64 `json:"timestamp"`
}
Message WebSocket消息结构