func (cs *ChatServer) ReadMessage(conn net.Conn) (*gochat.ChatMessage, error) { buf := make([]byte, 1024) readBytes, err := bufio.NewReader(conn).Read(buf) if err != nil { return nil, err } var receivedMsg = new(gochat.ChatMessage) if err := proto.Unmarshal(buf[:readBytes], receivedMsg); err != nil { return nil, err } log.Printf("Read: %v from %v on %v\n", receivedMsg.GetContent(), receivedMsg.GetSender(), conn.RemoteAddr()) return receivedMsg, nil }