新增协议
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package tcpserver
|
||||
|
||||
import (
|
||||
"DT/repository"
|
||||
"DT/ws"
|
||||
"bufio"
|
||||
"bytes"
|
||||
@@ -9,7 +8,6 @@ import (
|
||||
"fmt"
|
||||
"net"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
type TCPHandler struct {
|
||||
@@ -107,7 +105,7 @@ func (h *TCPHandler) HandleClient(conn net.Conn) {
|
||||
return
|
||||
}
|
||||
if err := h.Server.RealTimeReporting(client, message); err != nil {
|
||||
fmt.Printf("OTA 错误: %v\n", err)
|
||||
fmt.Printf("实时上报错误: %v\n", err)
|
||||
continue
|
||||
}
|
||||
broadcastMessage(message)
|
||||
@@ -135,7 +133,63 @@ func (h *TCPHandler) HandleClient(conn net.Conn) {
|
||||
continue
|
||||
}
|
||||
broadcastMessage(message)
|
||||
case "SetConfig":
|
||||
if !client.IsAuth {
|
||||
fmt.Printf("来自未授权客户端的消息 %s\n", conn.RemoteAddr())
|
||||
conn.Close()
|
||||
return
|
||||
}
|
||||
if err := h.Server.SetConfig(client, message); err != nil {
|
||||
fmt.Printf("客户端楼层设置 错误: %v\n", err)
|
||||
continue
|
||||
}
|
||||
broadcastMessage(message)
|
||||
|
||||
case "GetConfig":
|
||||
if !client.IsAuth {
|
||||
fmt.Printf("来自未授权客户端的消息 %s\n", conn.RemoteAddr())
|
||||
conn.Close()
|
||||
return
|
||||
}
|
||||
if err := h.Server.GetConfig(client, message); err != nil {
|
||||
fmt.Printf("获取客户端楼层设置错误: %v\n", err)
|
||||
continue
|
||||
}
|
||||
broadcastMessage(message)
|
||||
|
||||
case "mp3a", "mp3b", "mp3c":
|
||||
if !client.IsAuth {
|
||||
fmt.Printf("来自未授权客户端的消息 %s\n", conn.RemoteAddr())
|
||||
conn.Close()
|
||||
return
|
||||
}
|
||||
if err := h.Server.Mp3(client, message); err != nil {
|
||||
fmt.Printf("客户端设置语音内容错误: %v\n", err)
|
||||
continue
|
||||
}
|
||||
broadcastMessage(message)
|
||||
case "SetVoiceConf":
|
||||
if !client.IsAuth {
|
||||
fmt.Printf("来自未授权客户端的消息 %s\n", conn.RemoteAddr())
|
||||
conn.Close()
|
||||
return
|
||||
}
|
||||
if err := h.Server.SetVoiceConf(client, message); err != nil {
|
||||
fmt.Printf("客户端语音配置错误: %v\n", err)
|
||||
continue
|
||||
}
|
||||
broadcastMessage(message)
|
||||
case "GetVoiceConf":
|
||||
if !client.IsAuth {
|
||||
fmt.Printf("来自未授权客户端的消息 %s\n", conn.RemoteAddr())
|
||||
conn.Close()
|
||||
return
|
||||
}
|
||||
if err := h.Server.GetVoiceConf(client, message); err != nil {
|
||||
fmt.Printf("获取客户端语音配置错误: %v\n", err)
|
||||
continue
|
||||
}
|
||||
broadcastMessage(message)
|
||||
default:
|
||||
if !client.IsAuth {
|
||||
fmt.Printf("来自未授权客户端的消息 %s\n", conn.RemoteAddr())
|
||||
@@ -146,121 +200,3 @@ func (h *TCPHandler) HandleClient(conn net.Conn) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) HandleHeartbeat(client *Client, message []byte) error {
|
||||
if !client.IsAuth {
|
||||
return fmt.Errorf("unauthorized")
|
||||
}
|
||||
|
||||
var msg Message
|
||||
if err := json.Unmarshal(message, &msg); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if msg.Type == "ping" {
|
||||
client.LastPing = time.Now()
|
||||
response := Message{
|
||||
MessageType: MessageType{Type: "pong"},
|
||||
}
|
||||
|
||||
responseData, err := json.Marshal(response)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = client.Conn.Write(append(responseData, '\r', '\n'))
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Server) HandleAuth(client *Client, message []byte) error {
|
||||
var msg Message
|
||||
if err := json.Unmarshal(message, &msg); err != nil {
|
||||
return err
|
||||
}
|
||||
if msg.Type != "reg" {
|
||||
return fmt.Errorf("unauthorized")
|
||||
}
|
||||
|
||||
model, err := repository.GroupRepositorys.Device.GetDevice(map[string]interface{}{"imei": msg.Imei})
|
||||
if err != nil {
|
||||
return fmt.Errorf("设备不存在")
|
||||
}
|
||||
if msg.Pwd != model.DriverPass {
|
||||
return fmt.Errorf("设备密码不正确")
|
||||
}
|
||||
|
||||
model.DriverVer = msg.Ver
|
||||
err = repository.GroupRepositorys.Device.UpdateDevice(model)
|
||||
if err != nil {
|
||||
return fmt.Errorf("更新设备版本号失败")
|
||||
}
|
||||
|
||||
if client.authTimer != nil {
|
||||
client.authTimer.Stop()
|
||||
client.authTimer = nil
|
||||
}
|
||||
|
||||
client.Imei = msg.Imei
|
||||
client.IsAuth = true
|
||||
|
||||
response := Message{
|
||||
MessageType: MessageType{Type: "reg"},
|
||||
MessageTime: MessageTime{Time: time.Now().Unix()},
|
||||
}
|
||||
responseData, err := json.Marshal(response)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = client.Conn.Write(append(responseData, '\r', '\n'))
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *Server) HandleOta(client *Client, message []byte) error {
|
||||
var msg Message
|
||||
if err := json.Unmarshal(message, &msg); err != nil {
|
||||
return err
|
||||
}
|
||||
if msg.Type != "ota" {
|
||||
return fmt.Errorf("unauthorized")
|
||||
}
|
||||
fmt.Printf("设备升级结果:%s\r\n", msg.State)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Server) RealTimeReporting(client *Client, message []byte) error {
|
||||
var msg Message
|
||||
if err := json.Unmarshal(message, &msg); err != nil {
|
||||
return err
|
||||
}
|
||||
if msg.Type != "start" {
|
||||
return fmt.Errorf("unauthorized")
|
||||
}
|
||||
fmt.Printf("设备实时上报数据:%v\r\n", msg)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Server) StopRealTimeReporting(client *Client, message []byte) error {
|
||||
var msg Message
|
||||
if err := json.Unmarshal(message, &msg); err != nil {
|
||||
return err
|
||||
}
|
||||
if msg.Type != "stop" {
|
||||
return fmt.Errorf("unauthorized")
|
||||
}
|
||||
fmt.Printf("设备停止实时上报数据:%s\r\n", msg.State)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Server) TimingReporting(client *Client, message []byte) error {
|
||||
var msg Message
|
||||
if err := json.Unmarshal(message, &msg); err != nil {
|
||||
return err
|
||||
}
|
||||
if msg.Type != "up" {
|
||||
return fmt.Errorf("unauthorized")
|
||||
}
|
||||
fmt.Printf("设备定时上报数据:%v\r\n", msg.MessageData)
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user