Documentation ¶
Index ¶
- Variables
- func GetIP() (string, error)
- func Init()
- type Bucket
- type FireInfo
- type FireLife
- type FireTower
- func (t *FireTower) CheckTopicExist(topic string) bool
- func (t *FireTower) Close()
- func (t *FireTower) GetConnectNum(topic string) int64
- func (t *FireTower) Publish(fire *FireInfo) error
- func (t *FireTower) Run()
- func (t *FireTower) Send(message *socket.SendMessage) error
- func (t *FireTower) SetBeforeSubscribeHandler(fn func(context *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(*FireInfo) bool)
- func (t *FireTower) SetReadTimeoutHandler(fn func(*FireInfo))
- func (t *FireTower) SetSubscribeHandler(fn func(context *FireLife, topic []string) bool)
- func (t *FireTower) SetUnSubscribeHandler(fn func(context *FireLife, topic []string) bool)
- func (t *FireTower) ToSelf(b []byte) error
- type FireTowerConfig
- type TopicMessage
- type TowerManager
Constants ¶
This section is empty.
Variables ¶
var ( // ErrorClose gateway连接已经关闭的错误信息 ErrorClose = errors.New("firetower is collapsed") // ErrorTopicEmpty topic不存在的错误信息 ErrorTopicEmpty = errors.New("topic is empty") )
var ( // LogLevel Log Level 支持三种模式 // INFO 打印所有日志信息 // WARN 只打印警告及错误类型的日志信息 // ERROR 只打印错误日志 LogLevel = "INFO" // DefaultWriter 正常日志的默认写入方式 DefaultWriter io.Writer = os.Stdout // DefaultErrorWriter 错误日志的默认写入方式 DefaultErrorWriter io.Writer = os.Stderr )
var ( // ClusterId 当前实例在集群中的唯一id ClusterId int64 = 1 // DefaultConfigPath 默认配置文件读取路径 DefaultConfigPath = "./fireTower.toml" // TowerLogger 接管系统log t log类型 info log信息 TowerLogger func(t *FireTower, types, info string) // FireLogger 接管链接log t log类型 info log信息 FireLogger func(f *FireInfo, types, info string) // IdWorker 全局唯一id生成器实例 IdWorker *snowFlakeByGo.Worker )
var (
// ConfigTree 保存配置
ConfigTree *toml.Tree
)
Functions ¶
Types ¶
type Bucket ¶
type Bucket struct { BuffChan chan *socket.SendMessage // bucket的消息处理队列 // contains filtered or unexported fields }
Bucket 的作用是将一个实例的连接均匀的分布在多个bucket中来达到并发推送的目的
func (*Bucket) AddSubscribe ¶
AddSubscribe 添加当前实例中的topic->conn的订阅关系
func (*Bucket) DelSubscribe ¶
DelSubscribe 删除当前实例中的topic->conn的订阅关系
type FireInfo ¶
type FireInfo struct { Context *FireLife MessageType int Message *TopicMessage }
FireInfo 接收的消息结构体
func NewFireInfo ¶
NewFireInfo 第二个参数的作用是继承 继承上一个消息体的上下文,方便日志追踪或逻辑统一
type FireLife ¶
type FireLife struct {
// contains filtered or unexported fields
}
FireLife 客户端推送消息的结构体
type FireTower ¶
type FireTower struct { ClientId string // 客户端id 用来做业务逻辑 UserId string // 一般业务中每个连接都是一个用户 用来给业务提供用户识别 Cookie []byte // 这里提供给业务放一个存放跟当前连接相关的数据信息 // contains filtered or unexported fields }
FireTower 客户端连接结构体 包含了客户端一个连接的所有信息
func BuildTower ¶
BuildTower 实例化一个websocket客户端
func (*FireTower) CheckTopicExist ¶ added in v0.4.0
CheckTopicExist 检测topic是否已经有人订阅
func (*FireTower) Close ¶
func (t *FireTower) Close()
Close 关闭客户端连接并注销 调用该方法会完全注销掉由BuildTower生成的一切内容
func (*FireTower) GetConnectNum ¶
GetConnectNum 获取话题订阅数的grpc方法封装
func (*FireTower) Send ¶
func (t *FireTower) Send(message *socket.SendMessage) error
Send 发送消息方法 向某个topic发送某段信息
func (*FireTower) SetBeforeSubscribeHandler ¶
SetBeforeSubscribeHandler 订阅前回调事件 用户订阅topic前触发
func (*FireTower) SetOnConnectHandler ¶ added in v0.4.0
SetOnConnectHandler 建立连接事件
func (*FireTower) SetOnOfflineHandler ¶ added in v0.4.0
func (t *FireTower) SetOnOfflineHandler(fn func())
SetOnOfflineHandler 用户连接关闭时触发
func (*FireTower) SetOnSystemRemove ¶ added in v0.4.0
SetOnSystemRemove 系统移除某个用户的topic订阅
func (*FireTower) SetReadHandler ¶
SetReadHandler 客户端推送事件 接收到用户publish的消息时触发
func (*FireTower) SetReadTimeoutHandler ¶
SetReadTimeoutHandler 超时回调 readIn channal写满了 生产 > 消费的情况下触发超时机制
func (*FireTower) SetSubscribeHandler ¶
SetSubscribeHandler 订阅事件 用户订阅topic后触发
func (*FireTower) SetUnSubscribeHandler ¶
SetUnSubscribeHandler 取消订阅事件 用户取消订阅topic后触发
type FireTowerConfig ¶
type FireTowerConfig struct {
// contains filtered or unexported fields
}
FireTowerConfig 每个连接的配置信息
type TopicMessage ¶
type TopicMessage struct { Topic string `json:"topic"` Data json.RawMessage `json:"data"` // 可能是个json Type string `json:"type"` }
TopicMessage 话题信息结构体
type TowerManager ¶
type TowerManager struct {
// contains filtered or unexported fields
}
TowerManager 包含中心处理队列和多个bucket bucket的作用是将一个实例的连接均匀的分布在多个bucket中来达到并发推送的目的
var ( // TM 是一个实例的管理中心 TM *TowerManager )
func (*TowerManager) GetBucket ¶
func (t *TowerManager) GetBucket(bt *FireTower) (bucket *Bucket)
GetBucket 获取一个可以分配当前连接的bucket