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