SetNet.Hosting
1.1.0
dotnet add package SetNet.Hosting --version 1.1.0
NuGet\Install-Package SetNet.Hosting -Version 1.1.0
<PackageReference Include="SetNet.Hosting" Version="1.1.0" />
<PackageVersion Include="SetNet.Hosting" Version="1.1.0" />
<PackageReference Include="SetNet.Hosting" />
paket add SetNet.Hosting --version 1.1.0
#r "nuget: SetNet.Hosting, 1.1.0"
#:package SetNet.Hosting@1.1.0
#addin nuget:?package=SetNet.Hosting&version=1.1.0
#tool nuget:?package=SetNet.Hosting&version=1.1.0
<p align="center"> <img src="https://raw.githubusercontent.com/Povstalez/SetNet/master/assets/icon.png" alt="SetNet" width="96"> </p>
SetNet.Hosting
Run a SetNet server on the .NET Generic Host / ASP.NET Core.
Registers your SetNet server as a singleton and runs it as an IHostedService: the accept loop starts when the host starts, and the server is stopped gracefully on shutdown. This lets your realtime/game server participate in the standard host lifecycle — DI, configuration, logging, graceful termination — instead of being bootstrapped by hand in Main.
Pairs naturally with SetNet.DependencyInjection (inject dependencies into handlers) and SetNet.HealthChecks (k8s / load-balancer probes).
Install
dotnet add package SetNet
dotnet add package SetNet.Hosting
Usage
using SetNet.Hosting;
var builder = Host.CreateApplicationBuilder(args);
// register the server as a singleton + run it as a hosted service:
builder.Services.AddSetNetServer(sp =>
{
var config = new Configuration { Host = "0.0.0.0", Port = 5000 };
return new MyServer(config);
});
var host = builder.Build();
await host.RunAsync(); // MyServer.StartAsync() runs on startup, StopAsync() on shutdown
The factory receives the IServiceProvider, so you can pull configuration or dependencies from the container when building the server:
builder.Services.AddSingleton<IPlayerStore, SqlPlayerStore>();
builder.Services.AddSetNetServer(sp =>
{
var config = sp.GetRequiredService<IConfiguration>()
.GetSection("SetNet").Get<ServerOptions>();
return new MyServer(new Configuration { Host = "0.0.0.0", Port = config.Port });
});
Because the server is registered as a singleton BaseServer, other services (a health check, an inspector, a background job) can resolve the same instance:
builder.Services.AddHealthChecks()
.Add(new HealthCheckRegistration("setnet",
sp => new SetNetHealthCheck(sp.GetRequiredService<BaseServer>()),
default, default));
API
| Member | Purpose |
|---|---|
IServiceCollection.AddSetNetServer(Func<IServiceProvider, BaseServer>) |
Registers the server as a singleton BaseServer and adds SetNetServerHostedService |
SetNetServerHostedService |
IHostedService that calls StartAsync() on host start and StopAsync() on shutdown |
Notes
- Non-blocking startup.
StartAsynckicks off the server's accept loop without awaiting it, so host startup isn't blocked by the long-running loop. The loop runs untilStopAsync(host shutdown). - One server per registration. Call
AddSetNetServeronce; the server is a singletonBaseServer. To host more than one server, wrap them yourself or register additionalIHostedServices. - If you also use
SetNet.DependencyInjection, callprovider.UseSetNetHandlers()before the server is constructed — the simplest place is at the top of yourAddSetNetServerfactory, so it runs beforenew MyServer(...)builds the executor.
Documentation & source
- 🐙 https://github.com/Povstalez/SetNet — full module catalog in docs/MODULES.md
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.1)
- SetNet (>= 1.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.0 | 124 | 7/2/2026 |