Minor WS disconnect logic changes
This commit is contained in:
@@ -36,21 +36,30 @@ namespace Discord.Net.WebSockets
|
||||
|
||||
public Task Connect(string host, CancellationToken cancelToken)
|
||||
{
|
||||
_webSocket = new WebSocketClient(host);
|
||||
_webSocket.EnableAutoSendPing = false;
|
||||
_webSocket.NoDelay = true;
|
||||
_webSocket.Proxy = null;
|
||||
try
|
||||
{
|
||||
_webSocket = new WebSocketClient(host);
|
||||
_webSocket.EnableAutoSendPing = false;
|
||||
_webSocket.NoDelay = true;
|
||||
_webSocket.Proxy = null;
|
||||
|
||||
_webSocket.DataReceived += OnWebSocketBinary;
|
||||
_webSocket.MessageReceived += OnWebSocketText;
|
||||
_webSocket.Error += OnWebSocketError;
|
||||
_webSocket.Closed += OnWebSocketClosed;
|
||||
_webSocket.Opened += OnWebSocketOpened;
|
||||
_webSocket.DataReceived += OnWebSocketBinary;
|
||||
_webSocket.MessageReceived += OnWebSocketText;
|
||||
_webSocket.Error += OnWebSocketError;
|
||||
_webSocket.Closed += OnWebSocketClosed;
|
||||
_webSocket.Opened += OnWebSocketOpened;
|
||||
|
||||
_waitUntilConnect.Reset();
|
||||
_webSocket.Open();
|
||||
_waitUntilConnect.Wait(cancelToken);
|
||||
_taskManager.ThrowException(); //In case our connection failed
|
||||
_waitUntilConnect.Reset();
|
||||
_waitUntilDisconnect.Reset();
|
||||
_webSocket.Open();
|
||||
_waitUntilConnect.Wait(cancelToken);
|
||||
_taskManager.ThrowException(); //In case our connection failed
|
||||
}
|
||||
catch
|
||||
{
|
||||
_waitUntilDisconnect.Set();
|
||||
throw;
|
||||
}
|
||||
return TaskHelper.CompletedTask;
|
||||
}
|
||||
|
||||
@@ -96,8 +105,8 @@ namespace Discord.Net.WebSockets
|
||||
}
|
||||
private void OnWebSocketOpened(object sender, EventArgs e)
|
||||
{
|
||||
_waitUntilDisconnect.Reset();
|
||||
_waitUntilConnect.Set();
|
||||
_waitUntilDisconnect.Reset();
|
||||
}
|
||||
private void OnWebSocketText(object sender, MessageReceivedEventArgs e)
|
||||
=> OnTextMessage(e.Message);
|
||||
|
||||
Reference in New Issue
Block a user