H.Socket.IO
1.2.16
dotnet add package H.Socket.IO --version 1.2.16
NuGet\Install-Package H.Socket.IO -Version 1.2.16
<PackageReference Include="H.Socket.IO" Version="1.2.16" />
paket add H.Socket.IO --version 1.2.16
#r "nuget: H.Socket.IO, 1.2.16"
// Install H.Socket.IO as a Cake Addin #addin nuget:?package=H.Socket.IO&version=1.2.16 // Install H.Socket.IO as a Cake Tool #tool nuget:?package=H.Socket.IO&version=1.2.16
H.Socket.IO
High-performance event-based .NET Socket.IO library with a convenient interface,
aimed at writing the smallest possible code on the user side.
Features:
- Supports the latest version of Socket.IO server
- Supports namespaces
- The library is null-free and does not contain NRE
- Event-based
- Completely asynchronous
Nuget
Install-Package H.Socket.IO
Usage
using System;
using System.Threading.Tasks;
using H.Socket.IO;
#nullable enable
public class ChatMessage
{
public string? Username { get; set; }
public string? Message { get; set; }
public long NumUsers { get; set; }
}
public async Task ConnectToChatNowShTest()
{
await using var client = new SocketIoClient();
client.Connected += (sender, args) => Console.WriteLine($"Connected: {args.Namespace}");
client.Disconnected += (sender, args) => Console.WriteLine($"Disconnected. Reason: {args.Reason}, Status: {args.Status:G}");
client.EventReceived += (sender, args) => Console.WriteLine($"EventReceived: Namespace: {args.Namespace}, Value: {args.Value}, IsHandled: {args.IsHandled}");
client.HandledEventReceived += (sender, args) => Console.WriteLine($"HandledEventReceived: Namespace: {args.Namespace}, Value: {args.Value}");
client.UnhandledEventReceived += (sender, args) => Console.WriteLine($"UnhandledEventReceived: Namespace: {args.Namespace}, Value: {args.Value}");
client.ErrorReceived += (sender, args) => Console.WriteLine($"ErrorReceived: Namespace: {args.Namespace}, Value: {args.Value}");
client.ExceptionOccurred += (sender, args) => Console.WriteLine($"ExceptionOccurred: {args.Value}");
client.On("login", () =>
{
Console.WriteLine("You are logged in.");
});
client.On("login", json =>
{
Console.WriteLine($"You are logged in. Json: \"{json}\"");
});
client.On<ChatMessage>("login", message =>
{
Console.WriteLine($"You are logged in. Total number of users: {message.NumUsers}");
});
client.On<ChatMessage>("user joined", message =>
{
Console.WriteLine($"User joined: {message.Username}. Total number of users: {message.NumUsers}");
});
client.On<ChatMessage>("user left", message =>
{
Console.WriteLine($"User left: {message.Username}. Total number of users: {message.NumUsers}");
});
client.On<ChatMessage>("typing", message =>
{
Console.WriteLine($"User typing: {message.Username}");
});
client.On<ChatMessage>("stop typing", message =>
{
Console.WriteLine($"User stop typing: {message.Username}");
});
client.On<ChatMessage>("new message", message =>
{
Console.WriteLine($"New message from user \"{message.Username}\": {message.Message}");
});
await client.ConnectAsync(new Uri("wss://socketio-chat-h9jt.herokuapp.com/"));
await client.Emit("add user", "C# H.Socket.IO Test User");
await Task.Delay(TimeSpan.FromMilliseconds(200));
await client.Emit("typing");
await Task.Delay(TimeSpan.FromMilliseconds(200));
await client.Emit("new message", "hello");
await Task.Delay(TimeSpan.FromMilliseconds(200));
await client.Emit("stop typing");
await Task.Delay(TimeSpan.FromSeconds(2));
await client.DisconnectAsync();
}
Namespaces
// Will be sent with all messages(Unless otherwise stated).
// Also automatically connects to it.
client.DefaultNamespace = "my";
// or
// Connects to "my" namespace.
await client.ConnectAsync(new Uri(LocalCharServerUrl), namespaces: "my");
// Sends message to "my" namespace.
await client.Emit("message", "hello", "my");
Custom arguments
await client.ConnectAsync(new Uri($"wss://socketio-chat-h9jt.herokuapp.com/?access_token={mAccessToken}"));
Live Example
C# .NET Fiddle - https://dotnetfiddle.net/FWMpQ3
VB.NET .NET Fiddle - https://dotnetfiddle.net/WzIdnG
Http client of the tested Socket.IO server - https://socket-io-chat.now.sh/
Used documentation
Socket.IO Protocol - https://github.com/socketio/socket.io-protocol
Engine.IO Protocol - https://github.com/socketio/engine.io-protocol
Python implementation of Socket.IO - https://github.com/miguelgrinberg/python-socketio/blob/master/socketio/
Python implementation of Engine.IO - https://github.com/miguelgrinberg/python-engineio/blob/master/engineio/
Contacts
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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 is compatible. 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. |
.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 is compatible. |
.NET Framework | net461 was computed. net462 is compatible. 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. |
-
.NETFramework 4.6.2
- H.Engine.IO (>= 1.2.16)
- Microsoft.NETFramework.ReferenceAssemblies (>= 1.0.2)
-
.NETStandard 2.0
- H.Engine.IO (>= 1.2.16)
-
.NETStandard 2.1
- H.Engine.IO (>= 1.2.16)
-
net6.0
- H.Engine.IO (>= 1.2.16)
-
net7.0
- H.Engine.IO (>= 1.2.16)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on H.Socket.IO:
Package | Downloads |
---|---|
StreamChats
Package Description |
|
VL.SocketIO
SocketIO client plugin for VL. Wrapped around havendv' H.SocketIO nuget |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on H.Socket.IO:
Repository | Stars |
---|---|
SaviorXTanren/mixer-mixitup
Streaming bot application for handling chat, events, moderation, and other streamer assistance features
|
Version | Downloads | Last updated |
---|---|---|
1.2.16 | 3,362 | 8/29/2023 |
1.2.15 | 714 | 7/8/2023 |
1.2.14 | 321 | 7/8/2023 |
1.2.13 | 193 | 7/8/2023 |
1.2.11 | 19,175 | 1/4/2023 |
1.2.10 | 4,068 | 8/1/2022 |
1.2.9 | 1,493 | 3/19/2022 |
1.2.7 | 1,794 | 10/23/2021 |
1.2.6 | 373 | 10/21/2021 |
1.2.5 | 323 | 10/21/2021 |
1.2.4 | 307 | 10/21/2021 |
1.2.3 | 320 | 10/21/2021 |
1.2.1 | 1,160 | 7/15/2021 |
1.1.7.1 | 1,473 | 5/7/2021 |
1.1.7 | 31,815 | 1/11/2021 |
1.1.6 | 373 | 1/9/2021 |
1.1.5 | 381 | 1/9/2021 |
1.1.4 | 3,023 | 1/8/2021 |
1.1.3 | 410 | 1/4/2021 |
1.1.2 | 986 | 12/17/2020 |
1.1.1 | 3,760 | 12/9/2020 |
1.1.0 | 1,160 | 11/22/2020 |
1.0.4.1 | 4,417 | 8/23/2020 |
1.0.4 | 3,095 | 6/5/2020 |
1.0.3 | 528 | 6/3/2020 |
1.0.2 | 511 | 6/3/2020 |
1.0.1 | 452 | 6/3/2020 |
1.0.0.2 | 526 | 5/27/2020 |
1.0.0 | 451 | 5/27/2020 |
0.15.10 | 502 | 5/21/2020 |
0.15.9 | 633 | 5/21/2020 |
0.15.8 | 491 | 5/21/2020 |
0.15.7 | 467 | 5/21/2020 |
0.15.5 | 595 | 4/21/2020 |
0.15.4 | 438 | 4/21/2020 |
0.15.3 | 539 | 2/3/2020 |
0.15.2 | 481 | 2/2/2020 |
0.15.1 | 542 | 1/29/2020 |
0.15.0 | 500 | 1/29/2020 |
0.14.0 | 8,836 | 1/10/2020 |
⭐ Last 10 features:
- feat: Released. 2023-08-29
- feat: To use System.Text.Json. 2023-07-09
- feat: Added net6.0 and net7.0. 2023-07-09
- feat: Adding property to set RemoteCertificateValidationCallback on WebSocket. 2023-07-09
- feat: Updated EventGenerator. 2023-01-05
- feat: To EventGenerator. 2022-08-02
- feat: Updated NuGet packages. 2022-03-19
- feat: To net6.0 and C# 10. 2021-10-21
- feat: Updated Newtonsoft.Json to 13.0.1. 2021-07-16
🐞 Last 10 bug fixes:
- fix: Fixed CI. 2023-08-29
- ci: fixed. 2023-08-29
- fix: Fixed leakage of asynchronous scopes. 2023-08-29
- fix: Fixed ConfigureAwait warning. 2022-03-19
- fix: Fixed </br> in README. 2021-10-21
- fix: Fixed LocalTests. 2021-10-21
- fix: Fixed PackageReadmeFile. 2021-10-21
- Enabled Nullable in project and fixed warnings 2019-11-25