using System.Net.WebSockets; using System.Text; namespace MauMau_Server.Websockets; public static class WebsocketManager { public static void SendAsync(WebSocket socket, string message) { var bytes = Encoding.Default.GetBytes(message); var arraySegment = new ArraySegment(bytes); socket.SendAsync(arraySegment, WebSocketMessageType.Text, true, CancellationToken.None); } public static void BroadcastAsync(List sockets, string message) { foreach (var socket in sockets) { SendAsync(socket, message); } } public static async Task ReceiveAsync(WebSocket webSocket) { var buffer = new byte[4096]; var arraySegment = new ArraySegment(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); } }