diff --git a/examples/realtime-chat/main.go b/examples/realtime-chat/main.go index e4b55a0f..61a26419 100644 --- a/examples/realtime-chat/main.go +++ b/examples/realtime-chat/main.go @@ -25,9 +25,15 @@ func stream(c *gin.Context) { listener := openListener(roomid) defer closeListener(roomid, listener) + clientGone := c.Writer.CloseNotify() c.Stream(func(w io.Writer) bool { - c.SSEvent("message", <-listener) - return true + select { + case <-clientGone: + return false + case message := <-listener: + c.SSEvent("message", message) + return true + } }) }