1 Star 0 Fork 0

庞飞/multiapp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
connection_hub.go 1.46 KB
一键复制 编辑 原始数据 按行查看 历史
庞飞 提交于 2023-10-03 10:28 +08:00 . 合并主框架
package websocket
import (
"github.com/gofrs/uuid"
"gitee.com/pangxianfei/multiapp/request"
)
type connectionHub struct {
_name string
msgChan chan *Msg
isClosed bool
request.Context
}
func (ch *connectionHub) JoinChannel(channelName string) {
channelMap.Join(channelName, ch)
}
func (ch *connectionHub) LeaveChannel(channelName string) {
channelMap.Leave(channelName, ch)
}
func newConnectionHub(c request.Context, handler Handler) *connectionHub {
ch := &connectionHub{}
ch._name = uuid.Must(uuid.NewV4()).String()
ch.msgChan = make(chan *Msg, 256)
ch.isClosed = false
ch.Context = c
// join hub to Tmaic default channel
channelMap.Join(tmaicDefaultChannelName, ch)
// join hub to user defined default channel
for _, channelName := range handler.DefaultChannels() {
channelMap.Join(channelName, ch)
}
return ch
}
func (ch *connectionHub) name() string {
return ch._name
}
func (ch *connectionHub) Send(msg *Msg) {
ch.msgChan <- msg
}
func (ch *connectionHub) Broadcast(msg *Msg) {
ch.BroadcastTo(tmaicDefaultChannelName, msg)
}
func (ch *connectionHub) BroadcastTo(channelName string, msg *Msg) {
for _, hub := range channelMap.Hubs(channelName).All() {
if !hub.available() {
continue
}
hub.Send(msg)
}
}
func (ch *connectionHub) getChan() chan *Msg {
return ch.msgChan
}
func (ch *connectionHub) close() {
close(ch.msgChan)
ch.isClosed = true
channelMap.LeaveAll(ch)
}
func (ch *connectionHub) available() bool {
return !ch.isClosed
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/pangxianfei/multiapp.git
git@gitee.com:pangxianfei/multiapp.git
pangxianfei
multiapp
multiapp
v1.2.3

搜索帮助