func Decode(reader *bufio.Reader) { peek, err := reader.Peek(4) if err != nil { if err != io.EOF { log.Println(err) } else { return } } buffer := bytes.NewBuffer(peek) var length int32 err = binary.Read(buffer, binary.BigEndian, &length) if err != nil { log.Println(err) } if int32(reader.Buffered()) < length+4 { return } data := make([]byte, length+4) _, err = reader.Read(data) if err != nil { return } log.Println("received msg", string(data[4:])) }