pushKit

package
v2.9.114 Latest Latest
Warning

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

Go to latest
Published: Feb 4, 2024 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	PingData = []byte("ping")
	PongData = []byte("pong")
)
View Source
var (
	NotSetupError = errorKit.New("Haven’t been set up correctly")

	ChannelClosedError = errorKit.New("Channel is already closed")
)

Functions

func BindBsid added in v2.8.128

func BindBsid(channel Channel, bsid string)

func BindGroup added in v2.8.128

func BindGroup(channel Channel, group string)

func BindId added in v2.8.128

func BindId(channel Channel, id string)

func BindUser added in v2.8.128

func BindUser(channel Channel, user string)

func CloseAll added in v2.8.128

func CloseAll(reason string)

func CloseByBsid added in v2.8.128

func CloseByBsid(bsid string, reason string) (err error)

CloseByBsid

PS: 解绑(unbind)后续由 inner handler 处理.

func CloseByGroup added in v2.8.128

func CloseByGroup(group string, reason string)

CloseByGroup

PS: 解绑(unbind)后续由 inner handler 处理.

func CloseById added in v2.8.128

func CloseById(id string, reason string) (err error)

CloseById

PS: 解绑(unbind)后续由 inner handler 处理.

func CloseByUser added in v2.8.128

func CloseByUser(user string, reason string)

CloseByUser

PS: 解绑(unbind)后续由 inner handler 处理.

func DefaultIdGenerator added in v2.8.128

func DefaultIdGenerator() func() (string, error)

func GetCountOfBsidMap added in v2.8.130

func GetCountOfBsidMap() int

func GetCountOfGroupMap added in v2.8.130

func GetCountOfGroupMap() (count int)

func GetCountOfIdMap added in v2.8.130

func GetCountOfIdMap() int

func GetCountOfUserMap added in v2.8.130

func GetCountOfUserMap() (count int)

func GetDefaultLogger added in v2.8.132

func GetDefaultLogger() *logrus.Logger

func GetPongInterval added in v2.8.134

func GetPongInterval() time.Duration

func GetStatistics added in v2.8.130

func GetStatistics() string

GetStatistics

e.g. +----------+-------------------+ | TYPE | COUNT OF CHANNELS | +----------+-------------------+ | idMap | 0 | | bsidMap | 0 | | userMap | 0 | | groupMap | 0 | +----------+-------------------+

func MustSetUp added in v2.8.128

func MustSetUp(antPool *ants.Pool, logrusLogger *logrus.Logger, pongInterval time.Duration)

func PushToAll added in v2.8.128

func PushToAll(data []byte, exceptBsids []string) (err error)

func PushToBsid added in v2.8.128

func PushToBsid(data []byte, bsid string) (err error)

func PushToGroup added in v2.8.128

func PushToGroup(data []byte, group string, exceptBsids []string) (err error)

func PushToUser added in v2.8.128

func PushToUser(data []byte, user string, exceptBsids []string) (err error)

func SetDefaultLogger added in v2.8.132

func SetDefaultLogger(logrusLogger *logrus.Logger) error

func Setup added in v2.8.128

func Setup(antPool *ants.Pool, logrusLogger *logrus.Logger, pongInterval time.Duration) error

Setup

@param antPool 需要自行决定: cap大小、是否自定义输出... @param logger 可以为nil

func UnbindBsid added in v2.8.128

func UnbindBsid(channel Channel)

UnbindBsid

PS: 仅是解绑,不会关闭channel.

func UnbindGroup added in v2.8.128

func UnbindGroup(channel Channel)

UnbindGroup

PS: (1) 仅是解绑,不会关闭channel; (2) 解绑成功后,如果set为空,应该移除掉.

func UnbindId added in v2.8.128

func UnbindId(channel Channel)

UnbindId

PS: 仅是解绑,不会关闭channel.

func UnbindUser added in v2.8.128

func UnbindUser(channel Channel)

UnbindUser

PS: (1) 仅是解绑,不会关闭channel; (2) 解绑成功后,如果set为空,应该移除掉.

Types

type BaseChannel

type BaseChannel struct {
	mutexKit.RWMutex

	CloseCh chan string

	// ClientIP 可能是error string(获取失败的情况下).
	ClientIP string
	// Type Channel 的类型.
	Type string

	Id    string
	Bsid  string
	User  string
	Group string
	Data  interface{}

	Closed    bool
	Listeners Listeners

	PongInterval time.Duration
}

BaseChannel

!!!: (1) 此类型实现了部分 Channel 接口, (2) 此类型的子类应当实现 Channel 接口(主要是: Push()、Close()、bind、unbind),不能覆盖父类的方法.

(由于unbind可能涉及Close(),因此只能在子类中实现)

func (*BaseChannel) ClearBsid added in v2.8.128

func (channel *BaseChannel) ClearBsid()

func (*BaseChannel) ClearData added in v2.8.128

func (channel *BaseChannel) ClearData()

func (*BaseChannel) ClearGroup added in v2.8.128

func (channel *BaseChannel) ClearGroup()

func (*BaseChannel) ClearUser added in v2.8.128

func (channel *BaseChannel) ClearUser()

func (*BaseChannel) Equals added in v2.8.128

func (channel *BaseChannel) Equals(c Channel) bool

Equals 根据 id 判断是否相等.

func (*BaseChannel) GetBsid added in v2.8.128

func (channel *BaseChannel) GetBsid() (bsid string)

func (*BaseChannel) GetClientIP added in v2.8.128

func (channel *BaseChannel) GetClientIP() string

func (*BaseChannel) GetCloseCh added in v2.8.128

func (channel *BaseChannel) GetCloseCh() chan string

func (*BaseChannel) GetData added in v2.8.128

func (channel *BaseChannel) GetData() (data interface{})

func (*BaseChannel) GetGroup added in v2.8.128

func (channel *BaseChannel) GetGroup() (group string)

func (*BaseChannel) GetId added in v2.8.128

func (channel *BaseChannel) GetId() (id string)

func (*BaseChannel) GetType added in v2.8.128

func (channel *BaseChannel) GetType() string

func (*BaseChannel) GetUser added in v2.8.128

func (channel *BaseChannel) GetUser() (user string)

func (*BaseChannel) IsClosed

func (channel *BaseChannel) IsClosed() (rst bool)

IsClosed (读锁)

func (*BaseChannel) SetBsid added in v2.8.128

func (channel *BaseChannel) SetBsid(bsid string)

func (*BaseChannel) SetClosed

func (channel *BaseChannel) SetClosed() (flag bool)

SetClosed (写锁)

PS: 返回值如果为true,应当调用 Listeners.OnClose().

@return true: 设置成功

false:	设置失败(因为已经被设置关闭)

func (*BaseChannel) SetData added in v2.8.128

func (channel *BaseChannel) SetData(data interface{})

func (*BaseChannel) SetGroup added in v2.8.128

func (channel *BaseChannel) SetGroup(group string)

func (*BaseChannel) SetUser added in v2.8.128

func (channel *BaseChannel) SetUser(user string)

type Channel

type Channel interface {
	// Close 后端主动关闭通道.
	/*
		@param reason 关闭的原因
	*/
	Close(reason string) error
	IsClosed() (rst bool)
	// SetClosed
	/*
		PS: 返回值如果为true,应当 调用Listeners.OnClose() || 向closeCh发送数据.
	*/
	SetClosed() (flag bool)

	// Initialize 初始化Channel.
	Initialize() error

	// Dispose 释放Channel所持有的资源.
	Dispose()

	Push(data []byte) error

	GetClientIP() string
	GetType() string

	GetId() string
	GetBsid() string
	SetBsid(string)
	ClearBsid()
	GetUser() string
	SetUser(string)
	ClearUser()
	GetGroup() string
	SetGroup(string)
	ClearGroup()
	GetData() interface{}
	SetData(interface{})
	ClearData()

	BindGroup(group string)
	BindUser(user string)
	BindBsid(bsid string)

	GetCloseCh() chan string

	Equals(c Channel) bool
}

type Listener

type Listener interface {
	OnFailure(w http.ResponseWriter, r *http.Request, failureInfo string)

	OnHandshake(w http.ResponseWriter, r *http.Request, channel Channel)

	// OnMessage 收到 客户端 发来的消息.
	/*
		PS: 仅适用于WebSocket连接,因为SSE连接是单工的.
	*/
	OnMessage(channel Channel, messageType int, data []byte)

	// BeforeClosedByBackend 由于后端主动关闭连接,而触发的关闭事件.
	BeforeClosedByBackend(channel Channel, closeInfo string)

	OnClose(channel Channel, closeInfo string, bsid, user, group string)
}

type Listeners added in v2.8.127

type Listeners []Listener

func NewListeners added in v2.8.127

func NewListeners(listener Listener, sseFlag bool) (Listeners, error)

NewListeners

PS: 本方法仅供本项目使用,严禁外部调用.

func (Listeners) BeforeClosedByBackend added in v2.8.142

func (listeners Listeners) BeforeClosedByBackend(channel Channel, closeInfo string)

func (Listeners) OnClose added in v2.8.127

func (listeners Listeners) OnClose(channel Channel, closeInfo string)

func (Listeners) OnFailure added in v2.8.127

func (listeners Listeners) OnFailure(w http.ResponseWriter, r *http.Request, failureInfo string)

func (Listeners) OnHandshake added in v2.8.127

func (listeners Listeners) OnHandshake(w http.ResponseWriter, r *http.Request, channel Channel)

func (Listeners) OnMessage added in v2.8.127

func (listeners Listeners) OnMessage(channel Channel, messageType int, data []byte)

type Processor added in v2.8.128

type Processor interface {
	ProcessWithGin(ctx *gin.Context)

	Process(w http.ResponseWriter, r *http.Request)
}

Jump to

Keyboard shortcuts

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