Forráskód Böngészése

修改交易WS心跳问题

zhou.xiaoning 2 éve
szülő
commit
fb3247c395
1 módosított fájl, 25 hozzáadás és 4 törlés
  1. 25 4
      client/client.go

+ 25 - 4
client/client.go

@@ -291,10 +291,10 @@ func (r *Client) readClientWsTradeMessage() {
 			_ = r.wsTradeConn.WriteMessage(mt, msg)
 		case websocket.CloseMessage:
 			return
-		// case websocket.BinaryMessage:
-		// 	if err := r.clientToQuoteAgentMsg(msg); err != nil {
-		// 		return
-		// 	}
+		case websocket.BinaryMessage:
+			if err := r.clientToTradeAgentMsg(msg); err != nil {
+				return
+			}
 		case websocket.TextMessage:
 			fmt.Println(string(msg))
 			_ = r.wsTradeConn.WriteMessage(mt, msg)
@@ -318,6 +318,27 @@ func (r *Client) writeClientWsTradeMessage() {
 	}
 }
 
+// clientToTradeAgentMsg 处理客户端发上来的包
+func (r *Client) clientToTradeAgentMsg(msg []byte) error {
+	var p packet.MiPacket
+	err := p.UnPackHead(msg)
+	if err != nil {
+		// logger.Logger().Errorf("[%v c->s] invalid packet: %v", r.ProxyId, err)
+		return err
+	}
+	// 长度24 是心跳包, 目前只允许客户端上行心跳包
+	if p.Length == 24 {
+		// logger.Logger().Debugf("%v [%v c->s] %s", r.ClientIP, r.ProxyId, p.HeaderInfo())
+		// 将心跳发回给客户端
+		err = r.wsTradeConn.WriteMessage(websocket.BinaryMessage, msg)
+		if err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
 // **************** RabbitMQ ****************
 
 // MQPacket 与总线交互的数据体