title: How can I make net.Read wait for input in golang?
body: <p>So I'm making a server for my elevator in Go, and I'm running the function "handler" as a goroutine with a TCP-connection.
  I want it to read from a connection, and if no signal is detected within a certain timespan I want it to return an error. </p>
  
  <pre><code>func handler(conn net.Conn){
      conn.SetReadTimeout(5e9)
      for{
          data := make([]byte, 512)
          _,err := conn.Read(data)
      }
  }
  </code></pre>
  
  <p>As long as I have a client sending stuff over the connection it seems to be working fine, but as soon as the client stops sending the net.Read function returns the error EOF and starts looping with no delay whatsoever.</p>
  
  <p>This might be how Read is supposed to work, but could someone suggest another way to handle the problem without having to close and open the connection every time I want to read something?</p>