From 7dd1cd5bbd1e422a09cabe5a80f1a2cc96d3939c Mon Sep 17 00:00:00 2001 From: JKorf Date: Tue, 13 Jan 2026 21:21:30 +0100 Subject: [PATCH] Added HandleUnhandledMessage virtual method to SocketApiClient to allow some processing for messages which couldn't be mapped via the normal way --- CryptoExchange.Net/Clients/SocketApiClient.cs | 9 ++++++++- CryptoExchange.Net/Sockets/Default/SocketConnection.cs | 8 ++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CryptoExchange.Net/Clients/SocketApiClient.cs b/CryptoExchange.Net/Clients/SocketApiClient.cs index b2ef32e..4dfddcf 100644 --- a/CryptoExchange.Net/Clients/SocketApiClient.cs +++ b/CryptoExchange.Net/Clients/SocketApiClient.cs @@ -802,7 +802,6 @@ namespace CryptoExchange.Net.Clients return new CallResult>(socketConnection); } - /// /// Process an unhandled message /// @@ -811,6 +810,14 @@ namespace CryptoExchange.Net.Clients { } + /// + /// Process an unhandled message + /// + /// The socket connection + /// The type as identified + /// The data + protected internal virtual bool HandleUnhandledMessage(SocketConnection connection, string typeIdentifier, ReadOnlySpan data) => false; + /// /// Process connect rate limited /// diff --git a/CryptoExchange.Net/Sockets/Default/SocketConnection.cs b/CryptoExchange.Net/Sockets/Default/SocketConnection.cs index 6c3bd49..98178e7 100644 --- a/CryptoExchange.Net/Sockets/Default/SocketConnection.cs +++ b/CryptoExchange.Net/Sockets/Default/SocketConnection.cs @@ -571,8 +571,12 @@ namespace CryptoExchange.Net.Sockets.Default if (deserializationType == null) { - // No handler found for identifier either, can't process - _logger.LogWarning("Failed to determine message type for identifier {Identifier}. Data: {Message}", typeIdentifier, Encoding.UTF8.GetString(data.ToArray())); + if (!ApiClient.HandleUnhandledMessage(this, typeIdentifier, data)) + { + // No handler found for identifier either, can't process + _logger.LogWarning("Failed to determine message type for identifier {Identifier}. Data: {Message}", typeIdentifier, Encoding.UTF8.GetString(data.ToArray())); + } + return; }