Websocket waiting for message with Timeout
<p>I want to create a Websocket connection via GO. This connection follows a clearly defined pattern: The client should "authenticate" (enter data) themself immediately after creating the connection. If the client does not do it, the connection will be closed after a short period.</p>

<p>My current code contains this initial timeout (initTimeout) and the maximum timeout for all connections. While those timers can easily be checked, i am not sure how i can combine the timers with waiting for a message which blocks the execution.</p>

<pre><code>ws, err := upgrader.Upgrade(w, r, nil)
initTimeout := time.NewTicker(time.Duration(30) * time.Second)
maxTimeout := time.NewTicker(time.Duration(45) * time.Minute)

for {
    select {
        case &lt;- initTimeout.C:
            ws.WriteMessage(websocket.TextMessage, []byte("No input received"))
            ws.Close()
        case &lt;- maxTimeout.C:
            ws.WriteMessage(websocket.TextMessage, []byte("Maximum timeout"))
            ws.Close()
        default:
            mt, message, err := c.ReadMessage()
            // will this block the timers?
    }
}
</code></pre>