SetNet.WebSockets
1.2.0
dotnet add package SetNet.WebSockets --version 1.2.0
NuGet\Install-Package SetNet.WebSockets -Version 1.2.0
<PackageReference Include="SetNet.WebSockets" Version="1.2.0" />
<PackageVersion Include="SetNet.WebSockets" Version="1.2.0" />
<PackageReference Include="SetNet.WebSockets" />
paket add SetNet.WebSockets --version 1.2.0
#r "nuget: SetNet.WebSockets, 1.2.0"
#:package SetNet.WebSockets@1.2.0
#addin nuget:?package=SetNet.WebSockets&version=1.2.0
#tool nuget:?package=SetNet.WebSockets&version=1.2.0
<p align="center"> <img src="https://raw.githubusercontent.com/Povstalez/SetNet/master/assets/icon.png" alt="SetNet" width="96"> </p>
SetNet.WebSockets
WebSocket transport for SetNet.
Run SetNet over WebSockets instead of raw TCP/UDP: HTTP-friendly, proxy- and firewall-traversable, and reachable from browser/Blazor and locked-down networks. Everything above the transport — handlers, RPC, rooms, auth — works unchanged.
Install
dotnet add package SetNet
dotnet add package SetNet.WebSockets
Usage
Just switch the transport on your configuration:
using SetNet.WebSockets;
var config = new Configuration { Host = "127.0.0.1", Port = 5000 }.UseWebSockets();
// server listens on ws://host:port/ (HttpListener under the hood)
await new MyServer(config).StartAsync();
// client connects over ws://
var client = new MyClient(config);
await client.ConnectAsync();
UseWebSockets() sets TransportType.Custom + a WebSocketTransport (via the core ITransportProvider hook). No other code changes.
How it works
- Each SetNet message is one binary WebSocket message framed as
[2-byte type][payload](WebSocket message boundaries replace TCP's length prefix). - Server side uses
HttpListenerand upgrades HTTP requests to WebSockets; a non-WebSocket request is rejected with 400 and the accept loop continues. - WebSockets are reliable and ordered, so
DeliveryMethod/channels are ignored (like TCP).
Notes
- Binding: a specific host (e.g.
127.0.0.1) binds without elevation;0.0.0.0/empty binds all interfaces via+, which on Windows needs a URL ACL / admin (netsh http add urlacl). - TLS (
wss://): put a TLS-terminating reverse proxy (nginx, Caddy, YARP, a cloud LB) in front, or bindHttpListenerto anhttpsprefix with a bound certificate. Preferwssfor anything over the internet. - Browser clients connect with the standard JS/
System.Net.WebSocketsclient; your message framing/serializer must match. - Depends only on
SetNet.
Documentation & source
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
- SetNet (>= 1.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.