Universal.Common.Net.WebSocket
2.1.0
dotnet add package Universal.Common.Net.WebSocket --version 2.1.0
NuGet\Install-Package Universal.Common.Net.WebSocket -Version 2.1.0
<PackageReference Include="Universal.Common.Net.WebSocket" Version="2.1.0" />
<PackageVersion Include="Universal.Common.Net.WebSocket" Version="2.1.0" />
<PackageReference Include="Universal.Common.Net.WebSocket" />
paket add Universal.Common.Net.WebSocket --version 2.1.0
#r "nuget: Universal.Common.Net.WebSocket, 2.1.0"
#:package Universal.Common.Net.WebSocket@2.1.0
#addin nuget:?package=Universal.Common.Net.WebSocket&version=2.1.0
#tool nuget:?package=Universal.Common.Net.WebSocket&version=2.1.0
Universal.Common.Net.WebSocket
A from-scratch client (and lightweight server) implementation of the WebSocket protocol (RFC 6455) - frame parsing/masking, the opening HTTP upgrade handshake, ping/pong, fragmented messages, and the close handshake, all hand-rolled rather than wrapping System.Net.WebSockets.
WebSocketClient connects to any ws:///wss:// endpoint and exposes OnConnected/OnMessageReceived/OnFrameReceived/OnConnectionClosed/OnStreamError events. WebSocketServer hosts one - useful for a local echo/test double instead of depending on a public one - and needs a certificate handed to it for TLS support, since generating one isn't something this library's netstandard2.0 target can do on its own.
Quickstart
using WebSocketClient client = new WebSocketClient(new Uri("wss://example.com/socket"));
client.OnMessageReceived += (sender, e) =>
{
if (e.Message is TextMessage textMessage)
{
Console.WriteLine(textMessage.Text);
}
};
await client.OpenAsync();
await client.SendTextAsync("Hello!");
Hosting a local server (e.g. for tests) on an OS-assigned port:
using WebSocketServer server = new WebSocketServer(IPAddress.Loopback, port: 0, securePort: 0, certificate: myCertificate);
server.Start();
using WebSocketClient client = new WebSocketClient(new Uri($"ws://127.0.0.1:{server.Port}/"));
await client.OpenAsync();
| 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 | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. 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.0
- Universal.Common (>= 8.4.1)
- Universal.Common.Net.Http (>= 5.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.
WebSocketServer now actually processes a connection past the opening handshake.