2024-04-21 23:21:15 +02:00
|
|
|
namespace TanksServer.Interactivity;
|
|
|
|
|
|
|
|
internal abstract class WebsocketServerConnection(
|
|
|
|
ILogger logger,
|
2024-04-22 19:03:07 +02:00
|
|
|
ByteChannelWebSocket socket
|
2024-05-03 14:45:41 +02:00
|
|
|
)
|
2024-04-21 23:21:15 +02:00
|
|
|
{
|
|
|
|
protected readonly ByteChannelWebSocket Socket = socket;
|
2024-04-22 19:03:07 +02:00
|
|
|
protected readonly ILogger Logger = logger;
|
2024-04-21 23:21:15 +02:00
|
|
|
|
|
|
|
public Task CloseAsync()
|
|
|
|
{
|
2024-04-22 19:03:07 +02:00
|
|
|
Logger.LogDebug("closing connection");
|
2024-04-21 23:21:15 +02:00
|
|
|
return Socket.CloseAsync();
|
|
|
|
}
|
|
|
|
|
|
|
|
public async Task ReceiveAsync()
|
|
|
|
{
|
|
|
|
await foreach (var buffer in Socket.ReadAllAsync())
|
2024-04-30 23:49:39 +02:00
|
|
|
await HandleMessageAsync(buffer);
|
2024-04-22 19:03:07 +02:00
|
|
|
Logger.LogTrace("done receiving");
|
2024-04-21 23:21:15 +02:00
|
|
|
}
|
|
|
|
|
2024-05-02 21:27:56 +02:00
|
|
|
public abstract ValueTask RemovedAsync();
|
2024-04-28 15:34:32 +02:00
|
|
|
|
2024-05-02 21:27:56 +02:00
|
|
|
protected abstract ValueTask HandleMessageAsync(Memory<byte> buffer);
|
2024-04-21 23:21:15 +02:00
|
|
|
}
|