func (co *UserManager) Output(userMap map[string]chan *lm.Data_Message, user *lm.Data_User) { defer co.Conn.Close() defer delete(userMap, user.GetUser()) //// del for { msg := <-userMap[user.GetUser()] println(user.GetUser(), "======= output") outData := new(lm.Data) outData.Version = new(int32) outData.Type = new(int32) outData.Time = new(uint64) *outData.Version = 1 *outData.Type = int32(lm.Data_MESSAGE) *outData.Time = 111111 outData.Msg = msg /////// data, _ := proto.Marshal(outData) dataSize := make([]byte, 4) binary.BigEndian.PutUint32(dataSize, uint32(len(data))) ////TODO data的长度要做限制,要不然会出现计数不准的情况 co.Conn.Write(dataSize) co.Conn.Write(data) } }