代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。