H.Socket.IO
1.2.10
See the version list below for details.
dotnet add package H.Socket.IO --version 1.2.10
NuGet\Install-Package H.Socket.IO -Version 1.2.10
<PackageReference Include="H.Socket.IO" Version="1.2.10" />
paket add H.Socket.IO --version 1.2.10
#r "nuget: H.Socket.IO, 1.2.10"
// Install H.Socket.IO as a Cake Addin #addin nuget:?package=H.Socket.IO&version=1.2.10 // Install H.Socket.IO as a Cake Tool #tool nuget:?package=H.Socket.IO&version=1.2.10
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 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. |
.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 | net451 is compatible. net452 was computed. net46 was computed. 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. |
-
.NETFramework 4.5.1
- H.Engine.IO (>= 1.2.10)
-
.NETStandard 2.0
- H.Engine.IO (>= 1.2.10)
-
.NETStandard 2.1
- H.Engine.IO (>= 1.2.10)
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,322 | 8/29/2023 |
1.2.15 | 711 | 7/8/2023 |
1.2.14 | 297 | 7/8/2023 |
1.2.13 | 190 | 7/8/2023 |
1.2.11 | 18,552 | 1/4/2023 |
1.2.10 | 4,052 | 8/1/2022 |
1.2.9 | 1,486 | 3/19/2022 |
1.2.7 | 1,788 | 10/23/2021 |
1.2.6 | 370 | 10/21/2021 |
1.2.5 | 319 | 10/21/2021 |
1.2.4 | 305 | 10/21/2021 |
1.2.3 | 318 | 10/21/2021 |
1.2.1 | 1,154 | 7/15/2021 |
1.1.7.1 | 1,468 | 5/7/2021 |
1.1.7 | 31,813 | 1/11/2021 |
1.1.6 | 371 | 1/9/2021 |
1.1.5 | 379 | 1/9/2021 |
1.1.4 | 3,021 | 1/8/2021 |
1.1.3 | 408 | 1/4/2021 |
1.1.2 | 983 | 12/17/2020 |
1.1.1 | 3,755 | 12/9/2020 |
1.1.0 | 1,158 | 11/22/2020 |
1.0.4.1 | 4,415 | 8/23/2020 |
1.0.4 | 3,071 | 6/5/2020 |
1.0.3 | 526 | 6/3/2020 |
1.0.2 | 509 | 6/3/2020 |
1.0.1 | 450 | 6/3/2020 |
1.0.0.2 | 524 | 5/27/2020 |
1.0.0 | 449 | 5/27/2020 |
0.15.10 | 500 | 5/21/2020 |
0.15.9 | 626 | 5/21/2020 |
0.15.8 | 489 | 5/21/2020 |
0.15.7 | 465 | 5/21/2020 |
0.15.5 | 593 | 4/21/2020 |
0.15.4 | 436 | 4/21/2020 |
0.15.3 | 536 | 2/3/2020 |
0.15.2 | 479 | 2/2/2020 |
0.15.1 | 540 | 1/29/2020 |
0.15.0 | 498 | 1/29/2020 |
0.14.0 | 8,826 | 1/10/2020 |
⭐ Last 10 features:
- 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 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