wsutil

package
v0.5.4 Latest Latest
Warning

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

Go to latest
Published: Oct 17, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package wsutil 提供通用 WebSocket 基础设施。

Broadcaster 是基于房间的广播器,支持多房间、自动清理空房间、容错广播。 通过 Conn 接口解耦,不依赖具体的 websocket 库实现。

用法:

b := wsutil.NewBroadcaster()
defer b.Close()

// 客户端加入房间
b.Register("room:123", conn)

// 广播事件
b.BroadcastEvent("room:123", wsutil.Event{Type: "progress", Data: data})

// 查询房间状态
count := b.GetRoomCount("room:123")
rooms := b.GetRooms()

Index

Constants

View Source
const (
	// TextMessage 表示文本消息类型(与 websocket.TextMessage 一致)。
	TextMessage = 1
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Broadcaster

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

Broadcaster 是基于房间的 WebSocket 广播器。 支持多房间、自动清理空房间、容错广播。

用法:

b := wsutil.NewBroadcaster()
defer b.Close()

// 客户端加入房间
b.Register("review:123", conn)

// 广播事件
b.BroadcastEvent("review:123", wsutil.Event{Type: "progress", Data: progress})

func NewBroadcaster

func NewBroadcaster() *Broadcaster

NewBroadcaster 创建并启动广播器。

func (*Broadcaster) Broadcast

func (b *Broadcaster) Broadcast(room string, message []byte)

Broadcast 向指定房间广播原始字节消息。

func (*Broadcaster) BroadcastEvent

func (b *Broadcaster) BroadcastEvent(room string, event Event)

BroadcastEvent 向指定房间广播事件(自动序列化为 JSON 并添加时间戳)。

func (*Broadcaster) Close

func (b *Broadcaster) Close()

Close 关闭广播器,断开所有连接。

func (*Broadcaster) GetRoomCount

func (b *Broadcaster) GetRoomCount(room string) int

GetRoomCount 返回指定房间的连接数。

func (*Broadcaster) GetRooms

func (b *Broadcaster) GetRooms() []string

GetRooms 返回所有活跃房间名。

func (*Broadcaster) GetTotalConnections

func (b *Broadcaster) GetTotalConnections() int

GetTotalConnections 返回所有房间的总连接数。

func (*Broadcaster) Register

func (b *Broadcaster) Register(room string, conn Conn)

Register 将连接加入指定房间。

func (*Broadcaster) Unregister

func (b *Broadcaster) Unregister(room string, conn Conn)

Unregister 将连接从指定房间移除。 同一连接可注册多个房间;物理连接仅在最后一个房间移除时关闭。

type Conn

type Conn interface {
	WriteMessage(messageType int, data []byte) error
	Close() error
	// SetWriteDeadline 设置写超时(可选实现)。
	// 如果 Conn 不实现此方法,Broadcaster 会跳过写超时设置。
	SetWriteDeadline(t time.Time) error
}

Conn 是 WebSocket 连接的最小接口。 github.com/hertz-contrib/websocket.Conn 满足此接口。

type Event

type Event struct {
	Type      string    `json:"type"`
	Timestamp time.Time `json:"timestamp"`
	Data      any       `json:"data,omitempty"`
}

Event 是一个可序列化的事件,携带类型和时间戳。

Jump to

Keyboard shortcuts

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