The application should close the connection and cleanup variables and such when the read methods (NextReader, ReadMessage) return an error.
Use ping/pong to detect disconnects. The chat example shows how to do this.
- Send pings on a regular interval.
- Set read deadline to a time less than next expected pong.
- Reset the read deadline when a pong is received.
If a pong goes missing, the read methods will return with the read past deadline error.