1
0
mirror of https://github.com/JKorf/CryptoExchange.Net synced 2025-06-07 16:06:15 +00:00

Added KeepAliveInterval setting for socket connections

This commit is contained in:
Jan Korf 2022-05-23 22:05:04 +02:00
parent f3e1cfef33
commit c4430d63fa
3 changed files with 13 additions and 1 deletions

View File

@ -40,6 +40,10 @@ namespace CryptoExchange.Net
/// </summary> /// </summary>
protected int MaxSocketConnections { get; set; } = 9999; protected int MaxSocketConnections { get; set; } = 9999;
/// <summary> /// <summary>
/// Keep alive interval for websocket connection
/// </summary>
protected TimeSpan KeepAliveInterval { get; set; } = TimeSpan.FromSeconds(10);
/// <summary>
/// Delegate used for processing byte data received from socket connections before it is processed by handlers /// Delegate used for processing byte data received from socket connections before it is processed by handlers
/// </summary> /// </summary>
protected Func<byte[], string>? dataInterpreterBytes; protected Func<byte[], string>? dataInterpreterBytes;
@ -574,6 +578,7 @@ namespace CryptoExchange.Net
if (ClientOptions.Proxy != null) if (ClientOptions.Proxy != null)
socket.SetProxy(ClientOptions.Proxy); socket.SetProxy(ClientOptions.Proxy);
socket.KeepAliveInterval = KeepAliveInterval;
socket.Timeout = ClientOptions.SocketNoDataTimeout; socket.Timeout = ClientOptions.SocketNoDataTimeout;
socket.DataInterpreterBytes = dataInterpreterBytes; socket.DataInterpreterBytes = dataInterpreterBytes;
socket.DataInterpreterString = dataInterpreterString; socket.DataInterpreterString = dataInterpreterString;

View File

@ -77,6 +77,10 @@ namespace CryptoExchange.Net.Interfaces
/// </summary> /// </summary>
TimeSpan Timeout { get; set; } TimeSpan Timeout { get; set; }
/// <summary> /// <summary>
/// The interval at which to send a ping frame to the server
/// </summary>
TimeSpan KeepAliveInterval { get; set; }
/// <summary>
/// Set a proxy to use when connecting /// Set a proxy to use when connecting
/// </summary> /// </summary>
/// <param name="proxy"></param> /// <param name="proxy"></param>

View File

@ -122,6 +122,9 @@ namespace CryptoExchange.Net.Sockets
/// <inheritdoc /> /// <inheritdoc />
public TimeSpan Timeout { get; set; } public TimeSpan Timeout { get; set; }
/// <inheritdoc />
public TimeSpan KeepAliveInterval { get; set; }
/// <inheritdoc /> /// <inheritdoc />
public double IncomingKbps public double IncomingKbps
{ {
@ -332,7 +335,7 @@ namespace CryptoExchange.Net.Sockets
socket.Options.Cookies = cookieContainer; socket.Options.Cookies = cookieContainer;
foreach (var header in headers) foreach (var header in headers)
socket.Options.SetRequestHeader(header.Key, header.Value); socket.Options.SetRequestHeader(header.Key, header.Value);
socket.Options.KeepAliveInterval = TimeSpan.FromSeconds(10); socket.Options.KeepAliveInterval = KeepAliveInterval;
socket.Options.SetBuffer(65536, 65536); // Setting it to anything bigger than 65536 throws an exception in .net framework socket.Options.SetBuffer(65536, 65536); // Setting it to anything bigger than 65536 throws an exception in .net framework
return socket; return socket;
} }