This commit is contained in:
2025-01-07 16:00:24 +08:00
parent d7b004ea80
commit a467e69f7b
5 changed files with 36 additions and 6 deletions

View File

@@ -117,6 +117,8 @@ func main() {
//播放
// {"Type":"db","Db":"38"}
//{\n\t"Type":"ping"}
//{\"Type\":\"txt\",\"content\":\"c4e3bac3a3accac0bde7a3a1\","jg":"21""} 间隔秒

View File

@@ -214,3 +214,14 @@ func (s *Server) GetVoiceConf(client *Client, message []byte) error {
fmt.Printf("客户端语音配置状态:%v\r\n", msg.MessageVoiceConf)
return nil
}
func (s *Server) Db(client *Client, message []byte) error {
var msg Message
if err := json.Unmarshal(message, &msg); err != nil {
return err
}
if msg.Type != "db" {
return fmt.Errorf("unauthorized")
}
fmt.Printf("客户端分贝:%v\r\n", msg.MessageDb)
return nil
}

View File

@@ -190,6 +190,17 @@ func (h *TCPHandler) HandleClient(conn net.Conn) {
continue
}
broadcastMessage(message)
case "db":
//if !client.IsAuth {
// fmt.Printf("来自未授权客户端的消息 %s\n", conn.RemoteAddr())
// conn.Close()
// return
//}
if err := h.Server.Db(client, message); err != nil {
fmt.Printf("获取客户端音量分贝错误: %v\n", err)
continue
}
broadcastMessage(message)
default:
if !client.IsAuth {
fmt.Printf("来自未授权客户端的消息 %s\n", conn.RemoteAddr())

View File

@@ -19,6 +19,10 @@ type MessageState struct {
State string `json:"State,omitempty"`
}
type MessageDb struct {
Db string `json:"Db,omitempty"`
}
//type MessageData struct {
// UpDataStruct
//}
@@ -45,6 +49,7 @@ type MessageVoiceConf struct {
Yd string `json:"yd"`
IsPlay string `json:"isPlay"`
}
type Message struct {
MessageType
MessageImei
@@ -56,4 +61,5 @@ type Message struct {
MessageStartData
MessageConf `json:"Conf,omitempty"`
MessageVoiceConf `json:"VoiceConf,omitempty"`
MessageDb
}

View File

@@ -47,7 +47,7 @@ func (h *Hub) Run() {
h.Clients[client.Imei] = make(map[*Client]bool)
}
h.Clients[client.Imei][client] = true
log.Printf("客户端注册: IMEI=%s", client.Imei)
//log.Printf("客户端注册: IMEI=%s", client.Imei)
h.mu.Unlock()
case client := <-h.Unregister:
@@ -66,21 +66,21 @@ func (h *Hub) Run() {
case broadcast := <-h.Broadcast:
h.mu.RLock()
log.Printf("收到广播消息: IMEI=%s, Data=%s", broadcast.IMEI, broadcast.Data)
//log.Printf("收到广播消息: IMEI=%s, Data=%s", broadcast.IMEI, broadcast.Data)
if clients, ok := h.Clients[broadcast.IMEI]; ok {
log.Printf("找到目标客户端组: IMEI=%s, 客户端数=%d", broadcast.IMEI, len(clients))
//log.Printf("找到目标客户端组: IMEI=%s, 客户端数=%d", broadcast.IMEI, len(clients))
for client := range clients {
select {
case client.Send <- broadcast:
log.Printf("消息已发送到客户端: IMEI=%s", client.Imei)
//log.Printf("消息已发送到客户端: IMEI=%s", client.Imei)
default:
log.Printf("发送失败,关闭客户端: IMEI=%s", client.Imei)
//log.Printf("发送失败,关闭客户端: IMEI=%s", client.Imei)
close(client.Send)
delete(clients, client)
}
}
} else {
log.Printf("未找到目标客户端组: IMEI=%s", broadcast.IMEI)
//log.Printf("未找到目标客户端组: IMEI=%s", broadcast.IMEI)
}
h.mu.RUnlock()
}