mirror of
https://github.com/AlexMacocian/Net.Sdk.Web.Extensions.git
synced 2026-07-15 13:39:29 +00:00
Fix for websocket message buffer not clearing between messages
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<OutputType>Library</OutputType>
|
<OutputType>Library</OutputType>
|
||||||
<IsPackable>true</IsPackable>
|
<IsPackable>true</IsPackable>
|
||||||
<Version>0.8.11</Version>
|
<Version>0.8.13</Version>
|
||||||
<Authors>Alexandru Macocian</Authors>
|
<Authors>Alexandru Macocian</Authors>
|
||||||
<PackageLicenseFile>LICENSE</PackageLicenseFile>
|
<PackageLicenseFile>LICENSE</PackageLicenseFile>
|
||||||
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
|
||||||
|
|||||||
@@ -151,6 +151,7 @@ public static class WebApplicationExtensions
|
|||||||
while(webSocket.State == WebSocketState.Open && !cancellationToken.IsCancellationRequested)
|
while(webSocket.State == WebSocketState.Open && !cancellationToken.IsCancellationRequested)
|
||||||
{
|
{
|
||||||
ms.Position = 0;
|
ms.Position = 0;
|
||||||
|
var totalRead = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
var byteArray = ArrayPool<byte>.Shared.Rent(4 * 1024);
|
var byteArray = ArrayPool<byte>.Shared.Rent(4 * 1024);
|
||||||
@@ -158,6 +159,7 @@ public static class WebApplicationExtensions
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
result = await webSocket.ReceiveAsync(buffer, cancellationToken);
|
result = await webSocket.ReceiveAsync(buffer, cancellationToken);
|
||||||
|
totalRead += result.Count;
|
||||||
ms.Write(buffer[..result.Count].Span);
|
ms.Write(buffer[..result.Count].Span);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@@ -171,7 +173,7 @@ public static class WebApplicationExtensions
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await route.ExecuteAsync(result.MessageType, ms.GetReadOnlySequence(), cancellationToken);
|
await route.ExecuteAsync(result.MessageType, ms.GetReadOnlySequence().Slice(0, totalRead), cancellationToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user