From 17892272990ad3cda0b2d80d47b2879ff14361bf Mon Sep 17 00:00:00 2001 From: Carson Hoffman Date: Sat, 11 Apr 2020 22:05:27 -0400 Subject: [PATCH] Allow resume on reconnect --- wsapi.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/wsapi.go b/wsapi.go index 770c5df..d835ac2 100644 --- a/wsapi.go +++ b/wsapi.go @@ -516,7 +516,7 @@ func (s *Session) onEvent(messageType int, message []byte) (*Event, error) { // Must immediately disconnect from gateway and reconnect to new gateway. if e.Operation == 7 { s.log(LogInformational, "Closing and reconnecting in response to Op7") - s.Close() + s.CloseWithCode(websocket.CloseServiceRestart) s.reconnect() return e, nil } @@ -838,9 +838,13 @@ func (s *Session) reconnect() { } } +func (s *Session) Close() error { + return s.CloseWithCode(websocket.CloseNormalClosure) +} + // Close closes a websocket and stops all listening/heartbeat goroutines. // TODO: Add support for Voice WS/UDP connections -func (s *Session) Close() (err error) { +func (s *Session) CloseWithCode(closeCode int) (err error) { s.log(LogInformational, "called") s.Lock() @@ -862,7 +866,7 @@ func (s *Session) Close() (err error) { // To cleanly close a connection, a client should send a close // frame and wait for the server to close the connection. s.wsMutex.Lock() - err := s.wsConn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, "")) + err := s.wsConn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(closeCode, "")) s.wsMutex.Unlock() if err != nil { s.log(LogInformational, "error closing websocket, %s", err)