1
0
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:
JKorf 2018-12-18 13:41:40 +01:00
parent 90dac4a0d6
commit 4b382ed480

View File

@ -115,7 +115,7 @@ namespace CryptoExchange.Net.Sockets
{
while (true)
{
if (socket == null || socket.State != WebSocketState.Open)
if (socket?.State != WebSocketState.Open)
return;
if (DateTime.UtcNow - LastActionTime > Timeout)
@ -165,30 +165,37 @@ namespace CryptoExchange.Net.Sockets
public virtual void Reset()
{
socket.Dispose();
socket = null;
lock (socketLock)
{
socket.Dispose();
socket = null;
}
}
public virtual void Send(string data)
{
socket.Send(data);
lock (socketLock)
socket?.Send(data);
}
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,
AutoSendPingInterval = 10
};
socket.Security.EnabledSslProtocols = SSLProtocols;
socket.Opened += (o, s) => Handle(openHandlers);
socket.Closed += (o, s) => Handle(closeHandlers);
socket.Error += (o, s) => Handle(errorHandlers, s.Exception);
socket.MessageReceived += (o, s) => Handle(messageHandlers, s.Message);
socket.DataReceived += (o, s) => HandleByteData(s.Data);
socket = new WebSocket(Url, cookies: cookies.ToList(), customHeaderItems: headers.ToList())
{
EnableAutoSendPing = true,
AutoSendPingInterval = 10
};
socket.Security.EnabledSslProtocols = SSLProtocols;
socket.Opened += (o, s) => Handle(openHandlers);
socket.Closed += (o, s) => Handle(closeHandlers);
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(() =>