From d5c5d34e8fd53ea5d80b50d03af22dbdc3bb307e Mon Sep 17 00:00:00 2001 From: Dmitry Patsura Date: Tue, 13 Jun 2017 00:40:37 +0900 Subject: [PATCH] [Examples\Chat] Allow to free HTTP conn things --- examples/chat/client.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/examples/chat/client.go b/examples/chat/client.go index 2646847..e22685c 100644 --- a/examples/chat/client.go +++ b/examples/chat/client.go @@ -120,6 +120,11 @@ func (c *Client) writePump() { } } +func handleClientWSConnection(client *Client) { + go client.writePump() + client.readPump() +} + // serveWs handles websocket requests from the peer. func serveWs(hub *Hub, w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) @@ -127,8 +132,10 @@ func serveWs(hub *Hub, w http.ResponseWriter, r *http.Request) { log.Println(err) return } + client := &Client{hub: hub, conn: conn, send: make(chan []byte, 256)} client.hub.register <- client - go client.writePump() - client.readPump() + + // launch a new goroutine, now HTTP server can free unneeded things + go handleClientWSConnection(client) }