diff --git a/client/ws_client.go b/client/ws_client.go index b56547dd..9ed2be8c 100644 --- a/client/ws_client.go +++ b/client/ws_client.go @@ -85,6 +85,8 @@ func (wsc *WSClient) dial() error { func (wsc *WSClient) OnStop() { wsc.BaseService.OnStop() + wsc.Conn.Close() + wsc.Conn = nil // ResultsCh/ErrorsCh is closed in receiveEventsRoutine. } diff --git a/server/handlers.go b/server/handlers.go index ca42b2e6..5b600850 100644 --- a/server/handlers.go +++ b/server/handlers.go @@ -373,7 +373,9 @@ func (wsc *wsConnection) OnStart() error { func (wsc *wsConnection) OnStop() { wsc.BaseService.OnStop() - wsc.evsw.RemoveListener(wsc.remoteAddr) + if wsc.evsw != nil { + wsc.evsw.RemoveListener(wsc.remoteAddr) + } wsc.readTimeout.Stop() wsc.pingTicker.Stop() // The write loop closes the websocket connection