diff --git a/client.go b/client.go index 52f3271..83580c1 100644 --- a/client.go +++ b/client.go @@ -53,27 +53,31 @@ func (c *client) Path() string { func (c *client) run() { hasReadTimeout := c.o.ReadTimeout > 0 c.conn.SetReadLimit(c.o.MaxMessageSize) - defer func() { - c.o.onDisconnected(c) - }() - for { - if hasReadTimeout { - c.conn.SetReadDeadline(time.Now().Add(c.o.ReadTimeout)) - } + go func() { + defer func() { + c.o.onDisconnected(c) + }() - // messageType, data, err := c.conn.ReadMessage() - messageType, r, err := c.conn.NextReader() - if err != nil { - if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway) { - //c.fireError(err) + for { + if hasReadTimeout { + c.conn.SetReadDeadline(time.Now().Add(c.o.ReadTimeout)) } - break - } else { - c.onMessage(messageType, r) + + // messageType, data, err := c.conn.ReadMessage() + messageType, r, err := c.conn.NextReader() + if err != nil { + if websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway) { + //c.fireError(err) + } + break + } else { + c.onMessage(messageType, r) + } + } - } + }() } func (c *client) onMessage(messageType int, r io.Reader) {