![]() |
VOOZH | about |
dotnet add package Sketch7.SignalR.Orleans --version 8.0.0
NuGet\Install-Package Sketch7.SignalR.Orleans -Version 8.0.0
<PackageReference Include="Sketch7.SignalR.Orleans" Version="8.0.0" />
<PackageVersion Include="Sketch7.SignalR.Orleans" Version="8.0.0" />Directory.Packages.props
<PackageReference Include="Sketch7.SignalR.Orleans" />Project file
paket add Sketch7.SignalR.Orleans --version 8.0.0
#r "nuget: Sketch7.SignalR.Orleans, 8.0.0"
#:package Sketch7.SignalR.Orleans@8.0.0
#addin nuget:?package=Sketch7.SignalR.Orleans&version=8.0.0Install as a Cake Addin
#tool nuget:?package=Sketch7.SignalR.Orleans&version=8.0.0Install as a Cake Tool
<p align="center"> <img src="https://github.com/dotnet/orleans/blob/gh-pages/assets/logo.png" alt="SignalR.Orleans" width="300px"> <h1>Sketch7 SignalR.Orleans</h1><small>fork from <a href="https://github.com/OrleansContrib/SignalR.Orleans">OrleansContrib/SignalR.Orleans</a></small> </p>
👁 Package build/publish
👁 NuGet version
Orleans is a framework that provides a straight-forward approach to building distributed high-scale computing applications, without the need to learn and apply complex concurrency or other scaling patterns.
ASP.NET Core SignalR is a new library for ASP.NET Core developers that makes it incredibly simple to add real-time web functionality to your applications. What is "real-time web" functionality? It's the ability to have your server-side code push content to the connected clients as it happens, in real-time.
Sketch7.SignalR.Orleans is a package that allow us to enhance the real-time capabilities of SignalR by leveraging Orleans distributed cloud platform capabilities.
Installation is performed via NuGet
| Version | .NET | Orleans | Status |
|---|---|---|---|
| 1.x | netcore2 | 2.3.5 | |
| 2.x | netcore3 | 3.2.0 | |
| 3.x | net5 | 3.5.1 | |
| 4.x | net6 | 3.6.0 | 👁 CI |
| 5.x | net7 | 7.2.4 | 👁 CI |
| 6.x | net8 | 8.0.0 | 👁 CI |
| 7.x | net8 | 9.0.1 | 👁 CI |
| 8.x | net10 | 9.2.1 | 👁 CI |
From Package Manager:
PS> Install-Package Sketch7.SignalR.Orleans PS> Install-Package Sketch7.SignalR.Orleans.AspNet
.Net CLI:
# dotnet add package Sketch7.SignalR.Orleans # dotnet add package Sketch7.SignalR.Orleans.AspNet
Paket:
# paket add Sketch7.SignalR.Orleans # paket add Sketch7.SignalR.Orleans.AspNet
We need to configure the Orleans Silo with the below:
.UseSignalR() on ISiloHostBuilder.Example
new HostBuilder()
.UseOrleans((context, siloBuilder) =>
{
siloBuilder
.AddMemoryGrainStorage("PubSubStore") // You can use any other storage provider as long as you have one registered as "PubSubStore".
.UseSignalR();
});
Optional configuration to override the default implementation for both providers which by default are set as Memory.
Example
.UseSignalR(signalrBuilder => signalrBuilder.Configure((sb, opts) =>
{
siloBuilder.AddMemoryGrainStorage(opts.StorageProvider);
}));
Now your SignalR application needs to connect to the Orleans Cluster by using an Orleans Client:
.UseSignalR() on IClientBuilder.Example
var hostBuilder = new HostBuilder()
.UseOrleans((ctx, builder) =>
{
builder.UseSignalR()
});
hostBuilder.RunConsoleAsync();
Somewhere in your Startup.cs:
ConfigureServices..AddSignalR() on IServiceCollection (this is part of Microsoft.AspNetCore.SignalR nuget package).AddOrleans() on .AddSignalR().Example
public void ConfigureServices(IServiceCollection services)
{
...
services
.AddSignalR()
.AddOrleans();
...
}
Great! Now you have SignalR configured and Orleans SignalR backplane built in Orleans!
HubContext gives you the ability to communicate with the client from orleans grains (outside the hub).
Sample usage: Receiving server push notifications from message brokers, web hooks, etc. Ideally first update your grain state and then push signalr message to the client.
public class UserNotificationGrain : Grain<UserNotificationState>, IUserNotificationGrain
{
private HubContext<IUserNotificationHub> _hubContext;
public override async Task OnActivateAsync()
{
_hubContext = GrainFactory.GetHub<IUserNotificationHub>();
// some code...
await _hubContext.User(this.GetPrimaryKeyString()).Send("Broadcast", State.UserNotification);
}
}
PRs and feedback are very welcome!
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 1 NuGet packages that depend on Sketch7.SignalR.Orleans:
| Package | Downloads |
|---|---|
|
Sketch7.SignalR.Orleans.AspNet
Orleans backplane for SignalR Core. |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 9.0.0-rc.1 | 201 | 4/27/2026 |
| 9.0.0-rc.0 | 77 | 4/27/2026 |
| 8.0.1-rc.2 | 61 | 4/20/2026 |
| 8.0.1-dev.205 | 638 | 11/28/2025 |
| 8.0.1-dev.203 | 227 | 11/27/2025 |
| 8.0.0 | 552 | 11/21/2025 |
| 8.0.0-dev.199 | 338 | 11/21/2025 |
| 8.0.0-dev.198 | 326 | 11/21/2025 |
| 8.0.0-dev.197 | 404 | 11/18/2025 |
| 8.0.0-dev.195 | 401 | 11/18/2025 |
| 7.0.0-dev.191 | 135 | 1/20/2025 |
| 7.0.0-dev.188 | 118 | 1/20/2025 |
| 7.0.0-dev.185 | 131 | 1/20/2025 |
| 7.0.0-dev.182 | 134 | 1/16/2025 |
| 6.0.1 | 694 | 1/20/2025 |
| 6.0.0 | 280 | 1/15/2025 |
| 6.0.0-dev.178 | 101 | 1/15/2025 |
| 6.0.0-dev.172 | 7,628 | 2/3/2024 |
| 6.0.0-dev.170 | 140 | 2/2/2024 |
| 6.0.0-dev.166 | 144 | 1/16/2024 |