Minor WS disconnect logic changes

This commit is contained in:
RogueException
2015-12-31 15:51:28 -04:00
parent 8391d57f83
commit ebd1d77ccf

View File

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