Awesome
Networker
A simple to use TCP and UDP networking library for .NET, designed to be flexible, scalable and FAST.
Supported Frameworks
- .NET Standard 2.0
- .NET Framework 4.7+ for Unity
Features
- TCP
- UDP
- Socket pooling
- Object pooling
- Process thousands of requests per second
- Dependency Injection using Micrsoft.Extensions.DependencyInjection.ServiceCollection
- Logging using Microsoft.Extensions.Logging
- Works with Unity Game Engine (.NET Framework only)
Installation
NuGet Package Manager
Install-Package Networker
You must then install one of the following formatters
ZeroFormatter
Install-Package Networker.Extensions.ZeroFormatter
MessagePack
Install-Package Networker.Extensions.MessagePack
Protobuf-net
Install-Package Networker.Extensions.ProtoBufNet
JSON (Utf8Json)
Install-Package Networker.Extensions.Json
Tutorial - Creating a Basic Unity Multiplayer Game with Networker
Get started with this tutorial written by the library developer Mark Eastwood
Example
Creating a server is easy..
var server = new ServerBuilder()
.UseTcp(1000)
.UseUdp(5000)
.RegisterPacketHandlerModule<DefaultPacketHandlerModule>()
.RegisterPacketHandlerModule<ExamplePacketHandlerModule>()
.UseZeroFormatter()
.ConfigureLogging(loggingBuilder =>
{
loggingBuilder.AddConsole();
loggingBuilder.SetMinimumLevel(
LogLevel.Debug);
})
.Build();
server.Start();
You can handle a packet easily using dependency injection, logging and built-in deserialisation.
public class ChatPacketHandler : PacketHandlerBase<ChatPacket>
{
private readonly ILogger<ChatPacketHandler> _logger;
public ChatPacketHandler(ILogger<ChatPacketHandler> logger)
{
_logger = logger;
}
public override async Task Process(ChatPacket packet, IPacketContext packetContext)
{
_logger.LogDebug("I received the chat message: " + packet.Message);
packetContext.Sender.Send(new ChatPacket
{
Message = "Hey, I got your message!"
});
}
}