diff --git a/Net.Sdk.Web.Extensions/Net.Sdk.Web.Extensions.csproj b/Net.Sdk.Web.Extensions/Net.Sdk.Web.Extensions.csproj
index 74d0ba5..d0b396d 100644
--- a/Net.Sdk.Web.Extensions/Net.Sdk.Web.Extensions.csproj
+++ b/Net.Sdk.Web.Extensions/Net.Sdk.Web.Extensions.csproj
@@ -6,7 +6,7 @@
enable
Library
true
- 0.8.10
+ 0.8.11
Alexandru Macocian
LICENSE
true
diff --git a/Net.Sdk.Web.Extensions/WebApplicationExtensions.cs b/Net.Sdk.Web.Extensions/WebApplicationExtensions.cs
index 0ea806e..0c84e6c 100644
--- a/Net.Sdk.Web.Extensions/WebApplicationExtensions.cs
+++ b/Net.Sdk.Web.Extensions/WebApplicationExtensions.cs
@@ -1,12 +1,13 @@
-using Net.Sdk.Web.Middleware;
-using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Abstractions;
using Microsoft.AspNetCore.Mvc.Filters;
+using Microsoft.IO;
+using Net.Sdk.Web.Middleware;
+using System.Buffers;
using System.Core.Extensions;
using System.Diagnostics.CodeAnalysis;
using System.Extensions;
using System.Net.WebSockets;
-using Microsoft.IO;
namespace Net.Sdk.Web.Websockets.Extensions;
@@ -149,10 +150,20 @@ public static class WebApplicationExtensions
ValueWebSocketReceiveResult result;
while(webSocket.State == WebSocketState.Open && !cancellationToken.IsCancellationRequested)
{
+ ms.Position = 0;
do
{
- var buffer = ms.GetMemory(8 * 1024);
- result = await webSocket.ReceiveAsync(buffer, cancellationToken);
+ var byteArray = ArrayPool.Shared.Rent(4 * 1024);
+ var buffer = new Memory(byteArray);
+ try
+ {
+ result = await webSocket.ReceiveAsync(buffer, cancellationToken);
+ ms.Write(buffer[..result.Count].Span);
+ }
+ finally
+ {
+ ArrayPool.Shared.Return(byteArray);
+ }
} while (!result.EndOfMessage);
if (result.MessageType == WebSocketMessageType.Close)