Documentation
¶
Index ¶
- Variables
- func NewFire(source protocol.FireSource, tower PusherInfo) *protocol.FireInfo
- type Bucket
- type FireTower
- func (t *FireTower) ClientID() string
- func (t *FireTower) Close()
- func (t *FireTower) Ext() *sync.Map
- func (t *FireTower) GetConnectNum(topic string) (uint64, error)
- func (t *FireTower) Logger() *zap.Logger
- func (t *FireTower) OnClose() chan struct{}
- func (t *FireTower) Publish(fire *protocol.FireInfo) error
- func (t *FireTower) Run()
- func (t *FireTower) SetBeforeSubscribeHandler(fn func(context protocol.FireLife, topic []string) bool)
- func (t *FireTower) SetOnConnectHandler(fn func() bool)
- func (t *FireTower) SetOnOfflineHandler(fn func())
- func (t *FireTower) SetOnSystemRemove(fn func(topic string))
- func (t *FireTower) SetReadHandler(fn func(*protocol.FireInfo) bool)
- func (t *FireTower) SetReadTimeoutHandler(fn func(*protocol.FireInfo))
- func (t *FireTower) SetReceivedHandler(fn func(*protocol.FireInfo) bool)
- func (t *FireTower) SetSubscribeHandler(fn func(context protocol.FireLife, topic []string) bool)
- func (t *FireTower) SetUnSubscribeHandler(fn func(context protocol.FireLife, topic []string) bool)
- func (t *FireTower) SetUserID(id string)
- func (t *FireTower) Subscribe(context protocol.FireLife, topics []string) error
- func (t *FireTower) ToSelf(b []byte) error
- func (t *FireTower) TopicList() []string
- func (t *FireTower) UnSubscribe(context protocol.FireLife, topics []string) error
- func (t *FireTower) UserID() string
- type Manager
- type PusherInfo
- type ServerSideTower
- type TowerManager
- func (t *TowerManager) ClusterID() int64
- func (t *TowerManager) GetBucket(bt *FireTower) (bucket *Bucket)
- func (t *TowerManager) GetTopics() (map[string]uint64, error)
- func (t *TowerManager) Logger() *zap.Logger
- func (t *TowerManager) SetConnCountChangedHandler(f func())
- func (t *TowerManager) SetTopicCountChangedHandler(f func(string))
- func (t *TowerManager) Store() stores
- type TowerOption
Constants ¶
This section is empty.
Variables ¶
Functions ¶
func NewFire ¶
func NewFire(source protocol.FireSource, tower PusherInfo) *protocol.FireInfo
Types ¶
type Bucket ¶
type Bucket struct { BuffChan chan *protocol.FireInfo // bucket的消息处理队列 // contains filtered or unexported fields }
Bucket 的作用是将一个实例的连接均匀的分布在多个bucket中来达到并发推送的目的
func (*Bucket) AddSubscribe ¶
AddSubscribe 添加当前实例中的topic->conn的订阅关系
func (*Bucket) DelSubscribe ¶
DelSubscribe 删除当前实例中的topic->conn的订阅关系
type FireTower ¶
type FireTower struct { Cookie []byte // 这里提供给业务放一个存放跟当前连接相关的数据信息 // contains filtered or unexported fields }
FireTower 客户端连接结构体 包含了客户端一个连接的所有信息
func BuildTower ¶
BuildTower 实例化一个websocket客户端
func (*FireTower) Close ¶
func (t *FireTower) Close()
Close 关闭客户端连接并注销 调用该方法会完全注销掉由BuildTower生成的一切内容
func (*FireTower) GetConnectNum ¶
GetConnectNum 获取话题订阅数的grpc方法封装
func (*FireTower) SetBeforeSubscribeHandler ¶
func (t *FireTower) SetBeforeSubscribeHandler(fn func(context protocol.FireLife, topic []string) bool)
SetBeforeSubscribeHandler 订阅前回调事件 用户订阅topic前触发
func (*FireTower) SetOnConnectHandler ¶
SetOnConnectHandler 建立连接事件
func (*FireTower) SetOnOfflineHandler ¶
func (t *FireTower) SetOnOfflineHandler(fn func())
SetOnOfflineHandler 用户连接关闭时触发
func (*FireTower) SetOnSystemRemove ¶
SetOnSystemRemove 系统移除某个用户的topic订阅
func (*FireTower) SetReadHandler ¶
SetReadHandler 客户端推送事件 接收到用户publish的消息时触发
func (*FireTower) SetReadTimeoutHandler ¶
SetReadTimeoutHandler 超时回调 readIn channal写满了 生产 > 消费的情况下触发超时机制
func (*FireTower) SetReceivedHandler ¶
func (*FireTower) SetSubscribeHandler ¶
SetSubscribeHandler 订阅事件 用户订阅topic后触发
func (*FireTower) SetUnSubscribeHandler ¶
SetUnSubscribeHandler 取消订阅事件 用户取消订阅topic后触发
func (*FireTower) UnSubscribe ¶
type Manager ¶
type Manager interface { protocol.Pusher GetTopics() (map[string]uint64, error) ClusterID() int64 Store() stores Logger() *zap.Logger }
func BuildFoundation ¶
func BuildFoundation(cfg config.FireTowerConfig, opts ...TowerOption) (Manager, error)
func Setup ¶
func Setup(cfg config.FireTowerConfig, opts ...TowerOption) (Manager, error)
Init 初始化firetower 在调用firetower前请一定要先调用Init方法
type PusherInfo ¶
type ServerSideTower ¶
type ServerSideTower interface { SetOnConnectHandler(fn func() bool) SetOnOfflineHandler(fn func()) SetReceivedHandler(fn func(*protocol.FireInfo) bool) SetSubscribeHandler(fn func(context protocol.FireLife, topic []string) bool) SetUnSubscribeHandler(fn func(context protocol.FireLife, topic []string) bool) SetBeforeSubscribeHandler(fn func(context protocol.FireLife, topic []string) bool) SetOnSystemRemove(fn func(topic string)) GetConnectNum(topic string) (uint64, error) Publish(fire *protocol.FireInfo) error Subscribe(context protocol.FireLife, topics []string) error UnSubscribe(context protocol.FireLife, topics []string) error Logger() *zap.Logger TopicList() []string Run() Close() OnClose() chan struct{} }
func BuildServerSideTower ¶
func BuildServerSideTower(clientId string) ServerSideTower
BuildTower 实例化一个websocket客户端
type TowerManager ¶
TowerManager 包含中心处理队列和多个bucket bucket的作用是将一个实例的连接均匀的分布在多个bucket中来达到并发推送的目的
func (*TowerManager) ClusterID ¶
func (t *TowerManager) ClusterID() int64
func (*TowerManager) GetBucket ¶
func (t *TowerManager) GetBucket(bt *FireTower) (bucket *Bucket)
GetBucket 获取一个可以分配当前连接的bucket
func (*TowerManager) Logger ¶
func (t *TowerManager) Logger() *zap.Logger
func (*TowerManager) SetConnCountChangedHandler ¶
func (t *TowerManager) SetConnCountChangedHandler(f func())
func (*TowerManager) SetTopicCountChangedHandler ¶
func (t *TowerManager) SetTopicCountChangedHandler(f func(string))
func (*TowerManager) Store ¶
func (t *TowerManager) Store() stores
type TowerOption ¶
type TowerOption func(t *TowerManager)
func BuildWithClusterID ¶
func BuildWithClusterID(id int64) TowerOption
func BuildWithCoder ¶
func BuildWithCoder(coder protocol.Coder) TowerOption
func BuildWithLogger ¶
func BuildWithLogger(logger *zap.Logger) TowerOption
func BuildWithPusher ¶
func BuildWithPusher(pusher protocol.Pusher) TowerOption
func BuildWithStore ¶
func BuildWithStore(store stores) TowerOption