|
|
@@ -3,6 +3,7 @@ using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.ComponentModel; |
|
|
|
using System.IO; |
|
|
|
using System.Net; |
|
|
|
using System.Net.WebSockets; |
|
|
|
using System.Text; |
|
|
|
using System.Threading; |
|
|
@@ -23,18 +24,20 @@ namespace Discord.Net.WebSockets |
|
|
|
private readonly SemaphoreSlim _lock; |
|
|
|
private readonly Dictionary<string, string> _headers; |
|
|
|
private ClientWebSocket _client; |
|
|
|
private IWebProxy _proxy; |
|
|
|
private Task _task; |
|
|
|
private CancellationTokenSource _cancelTokenSource; |
|
|
|
private CancellationToken _cancelToken, _parentToken; |
|
|
|
private bool _isDisposed, _isDisconnecting; |
|
|
|
|
|
|
|
public DefaultWebSocketClient() |
|
|
|
public DefaultWebSocketClient(IWebProxy proxy = null) |
|
|
|
{ |
|
|
|
_lock = new SemaphoreSlim(1, 1); |
|
|
|
_cancelTokenSource = new CancellationTokenSource(); |
|
|
|
_cancelToken = CancellationToken.None; |
|
|
|
_parentToken = CancellationToken.None; |
|
|
|
_headers = new Dictionary<string, string>(); |
|
|
|
_proxy = proxy; |
|
|
|
} |
|
|
|
private void Dispose(bool disposing) |
|
|
|
{ |
|
|
@@ -70,7 +73,7 @@ namespace Discord.Net.WebSockets |
|
|
|
_cancelToken = CancellationTokenSource.CreateLinkedTokenSource(_parentToken, _cancelTokenSource.Token).Token; |
|
|
|
|
|
|
|
_client = new ClientWebSocket(); |
|
|
|
_client.Options.Proxy = null; |
|
|
|
_client.Options.Proxy = _proxy; |
|
|
|
_client.Options.KeepAliveInterval = TimeSpan.Zero; |
|
|
|
foreach (var header in _headers) |
|
|
|
{ |
|
|
|