Sai.MessageHub
1.0.0
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 Sai.MessageHub --version 1.0.0
NuGet\Install-Package Sai.MessageHub -Version 1.0.0
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="Sai.MessageHub" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sai.MessageHub --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Sai.MessageHub, 1.0.0"
#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 Sai.MessageHub as a Cake Addin #addin nuget:?package=Sai.MessageHub&version=1.0.0 // Install Sai.MessageHub as a Cake Tool #tool nuget:?package=Sai.MessageHub&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Sai.MessageHub
Simple WebSocket message handler implemented as aspnetcore middleware.
Example Usage
Program.cs
using Sai.MessageHub;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMessageHub();
builder.Services.AddHostedService<MyWorker>(); // Example worker which sends the time to all MessageHub clients every second
var app = builder.Build();
app.UseMessageHub();
// Message handler for "counter" type. Generic type <T> relates to data type.
// Can map multiple handlers to the same type if required.
app.MapMessageHandler<int>("counter", (context, data) =>
{
context.SendMessageToClient("counter-response", data); // echo back to sender
context.SendMessageToAllClients("last-counter-update", DateTime.UtcNow); // send last update to all clients
});
app.Run();
MyWorker.cs
public class MyWorker : BackgroundService
{
private readonly ILogger<MyWorker> _logger;
private readonly IMessageHubService _messageHubService;
public MyWorker(ILogger<MyWorker> logger, IMessageHubService messageHubService)
{
_logger = logger;
_messageHubService = messageHubService;
}
protected override Task ExecuteAsync(CancellationToken stoppingToken)
{
return Task.Run(() =>
{
while (!stoppingToken.IsCancellationRequested)
{
stoppingToken.WaitHandle.WaitOne(1000);
_messageHubService.SendMessageToAllClients("time", DateTime.UtcNow);
}
});
}
}
Client.js
document.addEventListener("DOMContentLoaded", async () => {
const messageHub = new MessageHub();
messageHub.addMessageHandler("time", data => {
document.querySelector(".time").innerText = data;
});
messageHub.addMessageHandler("counter-response", data => {
document.querySelector(".counter-response").innerText = data;
});
messageHub.addMessageHandler("last-counter-update", data => {
document.querySelector(".last-counter-update").innerText = data;
});
try
{
await messageHub.connect();
let counter = 0;
setInterval(() => {
counter++;
messageHub.sendMessage("counter", counter);
}, 1000);
}
catch(err)
{
alert(err);
}
});
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net6.0
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.AspNetCore.WebSockets (>= 2.2.1)
- Microsoft.Extensions.Hosting.Abstractions (>= 6.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 6.0.0)
- Newtonsoft.Json (>= 13.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.