Small refactor for receiving messages from websockets
This commit is contained in:
15
Websockets/WebSocketResponse.cs
Normal file
15
Websockets/WebSocketResponse.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user