mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2025-06-08 16:36:15 +00:00
added locks to socket
This commit is contained in:
parent
90dac4a0d6
commit
4b382ed480
@ -115,7 +115,7 @@ namespace CryptoExchange.Net.Sockets
|
|||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
if (socket == null || socket.State != WebSocketState.Open)
|
if (socket?.State != WebSocketState.Open)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (DateTime.UtcNow - LastActionTime > Timeout)
|
if (DateTime.UtcNow - LastActionTime > Timeout)
|
||||||
@ -165,30 +165,37 @@ namespace CryptoExchange.Net.Sockets
|
|||||||
|
|
||||||
public virtual void Reset()
|
public virtual void Reset()
|
||||||
{
|
{
|
||||||
socket.Dispose();
|
lock (socketLock)
|
||||||
socket = null;
|
{
|
||||||
|
socket.Dispose();
|
||||||
|
socket = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void Send(string data)
|
public virtual void Send(string data)
|
||||||
{
|
{
|
||||||
socket.Send(data);
|
lock (socketLock)
|
||||||
|
socket?.Send(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual async Task<bool> Connect()
|
public virtual async Task<bool> Connect()
|
||||||
{
|
{
|
||||||
if (socket == null)
|
lock (socketLock)
|
||||||
{
|
{
|
||||||
socket = new WebSocket(Url, cookies: cookies.ToList(), customHeaderItems: headers.ToList())
|
if (socket == null)
|
||||||
{
|
{
|
||||||
EnableAutoSendPing = true,
|
socket = new WebSocket(Url, cookies: cookies.ToList(), customHeaderItems: headers.ToList())
|
||||||
AutoSendPingInterval = 10
|
{
|
||||||
};
|
EnableAutoSendPing = true,
|
||||||
socket.Security.EnabledSslProtocols = SSLProtocols;
|
AutoSendPingInterval = 10
|
||||||
socket.Opened += (o, s) => Handle(openHandlers);
|
};
|
||||||
socket.Closed += (o, s) => Handle(closeHandlers);
|
socket.Security.EnabledSslProtocols = SSLProtocols;
|
||||||
socket.Error += (o, s) => Handle(errorHandlers, s.Exception);
|
socket.Opened += (o, s) => Handle(openHandlers);
|
||||||
socket.MessageReceived += (o, s) => Handle(messageHandlers, s.Message);
|
socket.Closed += (o, s) => Handle(closeHandlers);
|
||||||
socket.DataReceived += (o, s) => HandleByteData(s.Data);
|
socket.Error += (o, s) => Handle(errorHandlers, s.Exception);
|
||||||
|
socket.MessageReceived += (o, s) => Handle(messageHandlers, s.Message);
|
||||||
|
socket.DataReceived += (o, s) => HandleByteData(s.Data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return await Task.Run(() =>
|
return await Task.Run(() =>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user