Documentation ¶
Index ¶
- Variables
- func BindBsid(channel Channel, bsid string)
- func BindGroup(channel Channel, group string)
- func BindId(channel Channel, id string)
- func BindUser(channel Channel, user string)
- func CloseAll(reason string)
- func CloseByBsid(bsid string, reason string) (err error)
- func CloseByGroup(group string, reason string)
- func CloseById(id string, reason string) (err error)
- func CloseByUser(user string, reason string)
- func DefaultIdGenerator() func() (string, error)
- func GetCountOfBsidMap() int
- func GetCountOfGroupMap() (count int)
- func GetCountOfIdMap() int
- func GetCountOfUserMap() (count int)
- func GetDefaultLogger() *logrus.Logger
- func GetPongInterval() time.Duration
- func GetStatistics() string
- func MustSetUp(antPool *ants.Pool, logrusLogger *logrus.Logger, pongInterval time.Duration)
- func PushToAll(data []byte, exceptBsids []string) (err error)
- func PushToBsid(data []byte, bsid string) (err error)
- func PushToGroup(data []byte, group string, exceptBsids []string) (err error)
- func PushToUser(data []byte, user string, exceptBsids []string) (err error)
- func SetDefaultLogger(logrusLogger *logrus.Logger) error
- func Setup(antPool *ants.Pool, logrusLogger *logrus.Logger, pongInterval time.Duration) error
- func UnbindBsid(channel Channel)
- func UnbindGroup(channel Channel)
- func UnbindId(channel Channel)
- func UnbindUser(channel Channel)
- type BaseChannel
- func (channel *BaseChannel) ClearBsid()
- func (channel *BaseChannel) ClearData()
- func (channel *BaseChannel) ClearGroup()
- func (channel *BaseChannel) ClearUser()
- func (channel *BaseChannel) Equals(c Channel) bool
- func (channel *BaseChannel) GetBsid() (bsid string)
- func (channel *BaseChannel) GetClientIP() string
- func (channel *BaseChannel) GetCloseCh() chan string
- func (channel *BaseChannel) GetData() (data interface{})
- func (channel *BaseChannel) GetGroup() (group string)
- func (channel *BaseChannel) GetId() (id string)
- func (channel *BaseChannel) GetType() string
- func (channel *BaseChannel) GetUser() (user string)
- func (channel *BaseChannel) IsClosed() (rst bool)
- func (channel *BaseChannel) SetBsid(bsid string)
- func (channel *BaseChannel) SetClosed() (flag bool)
- func (channel *BaseChannel) SetData(data interface{})
- func (channel *BaseChannel) SetGroup(group string)
- func (channel *BaseChannel) SetUser(user string)
- type Channel
- type Listener
- type Listeners
- func (listeners Listeners) OnClose(channel Channel, closeInfo string)
- func (listeners Listeners) OnFailure(w http.ResponseWriter, r *http.Request, failureInfo string)
- func (listeners Listeners) OnHandshake(w http.ResponseWriter, r *http.Request, channel Channel)
- func (listeners Listeners) OnMessage(channel Channel, messageType int, data []byte)
- type Processor
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 DefaultIdGenerator ¶ added in v2.8.128
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 GetPongInterval ¶ added in v2.8.134
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 PushToBsid ¶ added in v2.8.128
func PushToGroup ¶ added in v2.8.128
func PushToUser ¶ added in v2.8.128
func SetDefaultLogger ¶ added in v2.8.132
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 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) 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) OnClose(channel Channel, closeInfo string, bsid, user, group string) }
Click to show internal directories.
Click to hide internal directories.