diff --git a/src/Discord.Net/WebSockets/WebSocket.WebSocketSharp.cs b/src/Discord.Net/WebSockets/WebSocket.WebSocketSharp.cs index 93fd379de..bab9dcab0 100644 --- a/src/Discord.Net/WebSockets/WebSocket.WebSocketSharp.cs +++ b/src/Discord.Net/WebSockets/WebSocket.WebSocketSharp.cs @@ -2,8 +2,6 @@ using Discord.Helpers; using System; using System.Collections.Concurrent; -using System.Linq; -using System.Text; using System.Threading; using System.Threading.Tasks; using WSSharpNWebSocket = WebSocketSharp.WebSocket; @@ -38,9 +36,14 @@ namespace Discord.WebSockets _webSocket = new WSSharpNWebSocket(host); _webSocket.EmitOnPing = false; _webSocket.EnableRedirection = true; - _webSocket.Compression = WebSocketSharp.CompressionMethod.None; + _webSocket.Compression = WebSocketSharp.CompressionMethod.None; _webSocket.OnMessage += (s, e) => RaiseProcessMessage(e.Data); - _webSocket.OnError += (s, e) => _parent.RaiseOnLog(LogMessageSeverity.Error, $"Websocket Error: {e.Message}"); + _webSocket.OnError += async (s, e) => + { + _parent.RaiseOnLog(LogMessageSeverity.Error, $"Websocket Error: {e.Message}"); + await _parent.DisconnectInternal(e.Exception, true, true); + } + _webSocket.Log.Output = (e, m) => { }; //Dont let websocket-sharp print to console _webSocket.Connect(); return TaskHelper.CompletedTask; } diff --git a/src/Discord.Net/WebSockets/WebSocket.cs b/src/Discord.Net/WebSockets/WebSocket.cs index 7a74214e2..e9b0ef62e 100644 --- a/src/Discord.Net/WebSockets/WebSocket.cs +++ b/src/Discord.Net/WebSockets/WebSocket.cs @@ -115,7 +115,7 @@ namespace Discord.WebSockets } public Task Disconnect() => DisconnectInternal(new Exception("Disconnect was requested by user."), isUnexpected: false); - protected async Task DisconnectInternal(Exception ex = null, bool isUnexpected = true, bool skipAwait = false) + protected internal async Task DisconnectInternal(Exception ex = null, bool isUnexpected = true, bool skipAwait = false) { int oldState; bool hasWriterLock;