Ai
2 Star 0 Fork 0

carlmax_my/console-core-go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
hub.go 1.08 KB
一键复制 编辑 原始数据 按行查看 历史
carlmax_my 提交于 2024-12-02 21:32 +08:00 . init project
package hub
import (
"log"
)
var h *Hub = nil
func InitHub() {
if h == nil {
h = NewHub()
}
}
func NewHub() *Hub {
return &Hub{
clientMap: make(map[ClientID]*Client),
register: make(chan *Client, 1024),
unregister: make(chan *Client, 1024),
message: make(chan *AgentCmd, 1024),
}
}
func Run() {
InitHub()
for {
select {
case client := <-h.register:
h.clientMap[client.Id] = client
case client := <-h.unregister:
if _, ok := h.clientMap[client.Id]; ok {
log.Println("unregister agent:", client.Id)
delete(h.clientMap, client.Id)
close(client.Send)
client.Conn.Close()
}
case msg := <-h.message:
if _, ok := h.clientMap[msg.AgentId]; ok {
h.clientMap[msg.AgentId].Send <- []byte(msg.Cmd)
log.Println("forward:", msg)
}
}
}
}
func GetClientById(agentId string) *Client {
if c, ok := h.clientMap[agentId]; ok {
return c
}
return nil
}
func DeleteClient(c *Client) bool {
h.unregister <- c
return true
}
func AddClient(c *Client) bool {
h.register <- c
return true
}
func SendMessage(cmd *AgentCmd) {
h.message <- cmd
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/carlmax_my/console-core-go.git
git@gitee.com:carlmax_my/console-core-go.git
carlmax_my
console-core-go
console-core-go
v0.1.109

搜索帮助