diff --git a/CryptoExchange.Net/Sockets/SocketConnection.cs b/CryptoExchange.Net/Sockets/SocketConnection.cs
index 297c95d..25d9298 100644
--- a/CryptoExchange.Net/Sockets/SocketConnection.cs
+++ b/CryptoExchange.Net/Sockets/SocketConnection.cs
@@ -254,12 +254,12 @@ namespace CryptoExchange.Net.Sockets
private void StartProcessingTask()
{
- log.Write(LogLevel.Trace, "Starting processing task");
+ log.Write(LogLevel.Trace, $"Starting {SocketId} processing task");
_socketProcessReconnectTask = Task.Run(async () =>
{
await _socket.ProcessAsync().ConfigureAwait(false);
await ReconnectAsync().ConfigureAwait(false);
- log.Write(LogLevel.Trace, "Processing task finished");
+ log.Write(LogLevel.Trace, $"Processing {SocketId} task finished");
});
}
@@ -566,7 +566,10 @@ namespace CryptoExchange.Net.Sockets
{
pendingRequests.Add(pending);
}
- Send(obj);
+ var sendOk = Send(obj);
+ if(!sendOk)
+ pending.Fail();
+
return pending.Event.WaitAsync(timeout);
}
@@ -576,22 +579,30 @@ namespace CryptoExchange.Net.Sockets
/// The type of the object to send
/// The object to send
/// How null values should be serialized
- public virtual void Send(T obj, NullValueHandling nullValueHandling = NullValueHandling.Ignore)
+ public virtual bool Send(T obj, NullValueHandling nullValueHandling = NullValueHandling.Ignore)
{
if(obj is string str)
- Send(str);
+ return Send(str);
else
- Send(JsonConvert.SerializeObject(obj, Formatting.None, new JsonSerializerSettings { NullValueHandling = nullValueHandling }));
+ return Send(JsonConvert.SerializeObject(obj, Formatting.None, new JsonSerializerSettings { NullValueHandling = nullValueHandling }));
}
///
/// Send string data over the websocket connection
///
/// The data to send
- public virtual void Send(string data)
+ public virtual bool Send(string data)
{
log.Write(LogLevel.Trace, $"Socket {SocketId} sending data: {data}");
- _socket.Send(data);
+ try
+ {
+ _socket.Send(data);
+ return true;
+ }
+ catch(Exception)
+ {
+ return false;
+ }
}
///