1
0
mirror of https://github.com/oliverbooth/TcpDotNet synced 2024-11-14 16:25:42 +00:00
TcpDotNet/TcpDotNet.ListenerIntegrationTest/Program.cs

37 lines
1.3 KiB
C#
Raw Normal View History

2024-02-12 17:41:52 +00:00
using TcpDotNet;
2022-07-05 14:55:59 +01:00
using TcpDotNet.ListenerIntegrationTest.PacketHandlers;
2022-05-18 16:39:48 +01:00
using TcpDotNet.Protocol;
using TcpDotNet.Protocol.Packets.ClientBound;
using TcpDotNet.Protocol.Packets.ServerBound;
var listener = new ProtocolListener();
2024-02-14 15:20:55 +00:00
listener.ClientConnected += (_, e) =>
{
Console.WriteLine($"Client connected from {e.Client.RemoteEndPoint} with session {e.Client.SessionId}");
return Task.CompletedTask;
};
listener.ClientDisconnected += (_, e) =>
{
Console.WriteLine($"Client {e.Client.SessionId} disconnected ({e.DisconnectReason})");
return Task.CompletedTask;
};
2022-05-18 16:39:48 +01:00
2022-07-05 14:55:59 +01:00
listener.RegisterPacketHandler(new HelloPacketHandler());
2022-05-18 16:39:48 +01:00
listener.RegisterPacketHandler(new PingPacketHandler());
Console.WriteLine("Starting listener");
2022-05-18 16:39:48 +01:00
listener.Start(1234);
Console.WriteLine($"Listener started on {listener.LocalEndPoint}");
2022-05-18 16:39:48 +01:00
await Task.Delay(-1);
internal sealed class PingPacketHandler : PacketHandler<PingPacket>
{
public override async Task HandleAsync(ClientNode recipient, PingPacket packet, CancellationToken cancellationToken = default)
2022-05-18 16:39:48 +01:00
{
Console.WriteLine($"Client {recipient.SessionId} sent ping with payload {BitConverter.ToString(packet.Payload)}");
var pong = new PongPacket(packet.CallbackId, packet.Payload);
await recipient.SendPacketAsync(pong, cancellationToken);
2022-05-18 16:39:48 +01:00
}
}