Small refactor for receiving messages from websockets

This commit is contained in:
2023-04-22 13:57:10 +02:00
parent fa51c76279
commit b2fb4b33dd
4 changed files with 46 additions and 27 deletions

View File

@@ -0,0 +1,15 @@
using System.Net.WebSockets;
namespace MauMau_Server.Websockets;
public class WebSocketResponse
{
public readonly WebSocketReceiveResult? Result;
public readonly byte[] SlicedBuffer;
public WebSocketResponse(WebSocketReceiveResult? result, byte[] slicedBuffer)
{
Result = result;
SlicedBuffer = slicedBuffer;
}
}

View File

@@ -19,4 +19,18 @@ public static class WebsocketManager
SendAsync(socket, message);
}
}
public static async Task<WebSocketResponse> ReceiveAsync(WebSocket webSocket)
{
var buffer = new byte[4096];
var arraySegment = new ArraySegment<byte>(buffer);
var result = await webSocket.ReceiveAsync(arraySegment, CancellationToken.None);
var slicedBuffer = buffer[0..result.Count];
return new WebSocketResponse(result, slicedBuffer);
}
public static async void CloseAsync(WebSocket webSocket, WebSocketReceiveResult result)
{
await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
}
}