I am not sure this really fixes the problem (but it seems to)
@@ -149,7 +149,7 @@ func main() {
select {
case <-done:
log.Println("Successfully close")
- case <-time.After(1 * time.Second):
+ case <-time.After(5 * time.Second):
log.Println("Forced close")
}
return
@@ -153,6 +153,14 @@ func getWSHandler(hub circolog.Hub) http.HandlerFunc {
hub.Unregister <- c
conn.Close()
}()
+ go func() {
+ for {
+ _, _, err := conn.ReadMessage()
+ if err != nil {
+ return
+ }
+ }()
for {
case message, ok := <-c.Messages: