代码拉取完成,页面将自动刷新
package websocket
import (
"sync"
)
var channelMap *channels
type channelName = string
const tmaicDefaultChannelName = "tmaicDefaultChannel"
func init() {
channelMap = &channels{
channels: make(map[channelName]*connectionHubMap),
}
}
type channels struct {
lock sync.RWMutex
channels map[channelName]*connectionHubMap
}
func (c *channels) LeaveAll(hub Hub) {
for _, hubMap := range c.channels {
hubMap.Remove(hub.name())
}
}
func (c *channels) Hubs(channelName channelName) *connectionHubMap {
c.lock.RLock()
defer c.lock.RUnlock()
if hubMap, ok := c.channels[channelName]; ok {
if hubMap == nil {
return newConnectionHubMap()
}
return hubMap
}
return newConnectionHubMap()
}
func (c *channels) Leave(channelName channelName, hub Hub) {
c.lock.Lock()
defer c.lock.Unlock()
if hubMap, ok := c.channels[channelName]; ok {
if hubMap == nil {
return
}
c.channels[channelName].Remove(hub.name())
}
return
}
func (c *channels) Join(channelName string, hub Hub) {
c.lock.Lock()
defer c.lock.Unlock()
if hubMap, ok := c.channels[channelName]; ok {
if hubMap == nil {
c.channels[channelName] = newConnectionHubMap()
}
} else {
c.channels[channelName] = newConnectionHubMap()
}
c.channels[channelName].Add(hub)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。