SwebSocket 1.0.2
Additional Details
Breaking bug with sending and receiving Messages above a certain length
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package SwebSocket --version 1.0.2
NuGet\Install-Package SwebSocket -Version 1.0.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SwebSocket" Version="1.0.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SwebSocket --version 1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SwebSocket, 1.0.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SwebSocket as a Cake Addin #addin nuget:?package=SwebSocket&version=1.0.2 // Install SwebSocket as a Cake Tool #tool nuget:?package=SwebSocket&version=1.0.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
SwebSocket
A handwritten, easy to use WebSocket Library that aims to:
- Follow RFC6455
- Be ease to use
- Allow Client and Server use-cases
- Integrate Secure Connections
- Be Portable (
netstandard2.1
)
Disclaimer
⚠️ Warning ⚠️
This is a fun-project and may contain severe errors. You should probably not use this in production.
Examples
Client
Echo Client (Manual)
using SwebSocket;
var ws = WebSocket
.Connect()
.To("wss://echo.websocket.org/")
.Build();
// Discard first message
_ = ws.Receive();
while (true) {
var line = Console.ReadLine();
if (line == null) break;
ws.Send(line);
var answer = ws.Receive();
if (answer is TextMessage text)
Console.WriteLine($"Received: {text.Text}");
}
Echo Client (Background Poller)
using SwebSocket;
var ws = WebSocket
.Connect()
.To("wss://echo.websocket.org/")
.Build();
ws.OnMessage += (_, message) => {
if (message is TextMessage text)
Console.WriteLine($"Received: {text.Text}");
};
BackgroundMessagePoller.Poll(ws);
while (true) {
var line = Console.ReadLine();
if (line == null) break;
ws.Send(line);
}
💬 Important 💬
The
WebSocket.OnMessage
event will (by default) not be raised. You can raise it manually by callingWebSocket.EmitMessage(Message)
or use a Poller which will call it under the hood.
Server
Echo Server (Manual)
using SwebSocket;
var listener = new Listener(IPAddress.Any, 3000);
while (true) {
var ws = listener.Accept();
try {
while (true) {
var message = ws.Receive();
ws.Send(message);
}
}
catch { }
}
Echo Server (Blocking Poller)
using SwebSocket;
var listener = new Listener(IPAddress.Any, 3000);
while (true) {
var ws = listener.Accept();
ws.OnMessage += (_, m) => ws.Send(m);
new BlockingMessagePoller(ws).Poll();
}
Secure Connection
Client
using SwebSocket;
var listener = new Listener(IPAddress.Any, 3000)
.UseSsl(SslOptions.NoSsl) // No Ssl
.UseSsl(SslOptions.ForServer(identity)); // X509Certificate2 as Identity
// ...
Server
using SwebSocket;
var ws = WebSocket
.Connect()
.To("wss://127.0.0.1/")
.UseSsl(SslOptions.ForClient(
"custom authority", // The name to validate the certificate against
caCertificates // X509Certificate2Collection
))
.Build();
// ...
Related Projects
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. |
.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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.1
- HttpMachine.PCL (>= 4.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.