Files
MauMau-Server/Websockets/WebsocketManager.cs

36 lines
1.2 KiB
C#

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<byte>(bytes);
socket.SendAsync(arraySegment, WebSocketMessageType.Text, true, CancellationToken.None);
}
public static void BroadcastAsync(List<WebSocket> sockets, string message)
{
foreach (var socket in sockets)
{
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);
}
}