From fe049d4c00814be1175775b8a3ce58d3e37455a6 Mon Sep 17 00:00:00 2001 From: Macocian Alexandru Victor Date: Mon, 15 May 2023 11:21:29 +0200 Subject: [PATCH] Add extension to recycle websockets (#50) Signed-off-by: Macocian Alexandru Victor --- .../SystemExtensions.NetStandard.csproj | 2 +- .../WebSockets/ClientWebSocket.cs | 8 +++++++- .../WebSockets/IClientWebSocket.cs | 2 ++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/SystemExtensions.NetStandard/SystemExtensions.NetStandard.csproj b/SystemExtensions.NetStandard/SystemExtensions.NetStandard.csproj index baca4f8..ff943c1 100644 --- a/SystemExtensions.NetStandard/SystemExtensions.NetStandard.csproj +++ b/SystemExtensions.NetStandard/SystemExtensions.NetStandard.csproj @@ -7,7 +7,7 @@ LICENSE true System - 1.6.1 + 1.6.2 Alexandru Macocian https://github.com/AlexMacocian/SystemExtensions Extensions for the System namespace diff --git a/SystemExtensions.NetStandard/WebSockets/ClientWebSocket.cs b/SystemExtensions.NetStandard/WebSockets/ClientWebSocket.cs index 35883e3..f8941af 100644 --- a/SystemExtensions.NetStandard/WebSockets/ClientWebSocket.cs +++ b/SystemExtensions.NetStandard/WebSockets/ClientWebSocket.cs @@ -9,7 +9,7 @@ namespace System.Net.WebSockets; public sealed class ClientWebSocket : IClientWebSocket, IDisposable { private readonly ILogger? logger; - private readonly ClientWebSocket internalWebSocket = new(); + private ClientWebSocket internalWebSocket = new(); public ClientWebSocketOptions Options => this.internalWebSocket.Options; @@ -89,4 +89,10 @@ public sealed class ClientWebSocket : IClientWebSocket, IDisposa scopedLogger?.LogDebug($"Type: {messageType}\nCount: {buffer.Count}\nEndOfMessage: {endOfMessage}"); return this.internalWebSocket.SendAsync(buffer, messageType, endOfMessage, cancellationToken); } + + public void RefreshSocket(ClientWebSocket? clientWebSocket = null) + { + this.internalWebSocket?.Dispose(); + this.internalWebSocket = clientWebSocket ?? new ClientWebSocket(); + } } diff --git a/SystemExtensions.NetStandard/WebSockets/IClientWebSocket.cs b/SystemExtensions.NetStandard/WebSockets/IClientWebSocket.cs index 59808ee..acf3431 100644 --- a/SystemExtensions.NetStandard/WebSockets/IClientWebSocket.cs +++ b/SystemExtensions.NetStandard/WebSockets/IClientWebSocket.cs @@ -28,4 +28,6 @@ public interface IClientWebSocket Task ReceiveAsync(ArraySegment buffer, CancellationToken cancellationToken); Task SendAsync(ArraySegment buffer, WebSocketMessageType messageType, bool endOfMessage, CancellationToken cancellationToken); + + void RefreshSocket(ClientWebSocket? clientWebSocket = default); }