// 处理客户端逻辑 func handleClient(clientObj *client.Client, loginSucceedCh chan int) { for { content, ok := clientObj.GetValieMessage() if !ok { break } // 处理数据 // 1、将结果反序列化 responseMap := make(map[string]interface{}) err := json.Unmarshal(content, &responseMap) if err != nil { logUtil.Log(fmt.Sprintf("反序列化%s出错,错误信息为:%s", string(content), err), logUtil.Error, true) continue } // 2、判断Code是否为0 code_init, ok := responseMap["Code"].(float64) if !ok { fmt.Println(fmt.Sprintf("Code:%v,不是int类型", responseMap["Code"])) continue } code := int(code_init) if code != 0 { // 解析Message message, ok := responseMap["Message"].(string) if !ok { fmt.Println(fmt.Sprintf("Message:%v,不是string类型", responseMap["Message"])) continue } fmt.Println("返回结果不正确,错误信息为:", message) continue } // 3、判断CommandType commandType_init, ok := responseMap["CommandType"].(float64) if !ok { fmt.Println(fmt.Sprintf("CommandType:%v,不是int类型", responseMap["CommandType"])) continue } commandType := int(commandType_init) switch commandType { case 1: //Login loginSucceedCh <- 1 case 2: //Logout case 3: //SendMessage // 获取Data dataMap, ok := responseMap["Data"].(map[string]interface{}) if !ok { fmt.Println(fmt.Sprintf("Data:%v,不是map[string]interface{}类型", responseMap["Data"])) continue } // 获取Message message, ok := dataMap["Message"].(string) if !ok { fmt.Println(fmt.Sprintf("Message:%v,不是string类型", dataMap["Message"])) continue } // 获取发送者信息: fromMap, ok := dataMap["From"].(map[string]interface{}) if !ok { fmt.Println(fmt.Sprintf("From:%v,不是map[string]interface{}类型", dataMap["From"])) continue } // 获取发送者名称: name, ok := fromMap["Name"].(string) if !ok { fmt.Println(fmt.Sprintf("Name:%v,不是string类型", fromMap["Name"])) continue } fmt.Printf("%s说:%s\n", name, message) case 4: //UpdatePlayerInfo } } }