ManagedCode.Orleans.SignalR.Client
7.1.0
Prefix Reserved
See the version list below for details.
dotnet add package ManagedCode.Orleans.SignalR.Client --version 7.1.0
NuGet\Install-Package ManagedCode.Orleans.SignalR.Client -Version 7.1.0
<PackageReference Include="ManagedCode.Orleans.SignalR.Client" Version="7.1.0" />
paket add ManagedCode.Orleans.SignalR.Client --version 7.1.0
#r "nuget: ManagedCode.Orleans.SignalR.Client, 7.1.0"
// Install ManagedCode.Orleans.SignalR.Client as a Cake Addin #addin nuget:?package=ManagedCode.Orleans.SignalR.Client&version=7.1.0 // Install ManagedCode.Orleans.SignalR.Client as a Cake Tool #tool nuget:?package=ManagedCode.Orleans.SignalR.Client&version=7.1.0
Orleans.SignalR
Orleans.SignalR is a lightweight, open-source library that enables easy integration of SignalR with Orleans, a distributed virtual actor model framework for building scalable, fault-tolerant systems. The library provides a SignalR backplane, allowing you to effortlessly add real-time communication capabilities to your distributed systems.
Features
Orleans.SignalR offers the following features:
- Simple and clear implementation
- Seamless integration with SignalR
- Support for all SignalR functions, including ClientInvocation
Installation
You can install Orleans.SignalR using Nuget
For Client
Install-Package ManagedCode.Orleans.SignalR.Client
For Server
Install-Package ManagedCode.Orleans.SignalR.Server
Usage
Client Configuration
To use Orleans.SignalR on the client, add the following code to your client configuration:
clientBuilder.Services
.AddSignalR()
.AddOrleans();
Server Configuration
To use Orleans.SignalR on the server, add the following code to your server configuration:
siloBuilder
.AddMemoryGrainStorage(OrleansSignalROptions.OrleansSignalRStorage);
siloBuilder.Services
.AddSignalR()
.AddOrleans();
Using HubContext in Grain
In this example, TestGrain defines the interface for the grain, and TestGrain inject the interface for sending messages using SignalR
public class TestGrain : Grain, ITestGrain
{
private readonly IHubContext<InterfaceTestHub> _hubContext;
public TestGrain(IHubContext<InterfaceTestHub> hubContext)
{
_hubContext = hubContext;
}
public Task PushRandom()
{
return _hubContext.Clients.All.SendAsync("SendRandom", new Random().Next());
}
}
You can use typed Orleans client, with interface IOrleansHubContext
public class TestGrain : Grain, ITestGrain
{
private readonly IOrleansHubContext<InterfaceTestHub, IClientInterfaceHub> _hubContext;
public TestGrain(IOrleansHubContext<InterfaceTestHub, IClientInterfaceHub> hubContext)
{
_hubContext = hubContext;
}
public Task PushRandom()
{
return _hubContext.Clients.All.SendMessage(this.GetPrimaryKeyString());
}
}
Using ClientInvocation
Orleans.SignalR supports all functions from SignalR, including ClientInvocation. However, to avoid blocking tasks,
use Task.Run
.
Here's an example:
public async Task<string> GetMessage(string connectionId)
{
var message = await Task.Run(() => _hubContext.Clients.Client(connectionId)
.InvokeAsync<string>("GetMessage", CancellationToken.None));
return message;
}
Contributing
We welcome contributions! If you encounter any bugs or have feature requests, please open an issue. If you want to contribute code, please fork the repository and submit a pull request.
License
Orleans.SignalR is licensed under the MIT License.
Credits
Orleans.SignalR is based on the work of the Orleans community and the SignalR team at Microsoft.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | 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. |
-
net7.0
- ManagedCode.Orleans.SignalR.Core (>= 7.1.0)
- Microsoft.Extensions.DependencyInjection (>= 7.0.0)
- Microsoft.Orleans.Client (>= 7.1.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
8.1.1 | 156 | 6/19/2024 |
8.1.0 | 141 | 5/13/2024 |
7.2.1 | 163 | 9/12/2023 |
7.1.6 | 206 | 6/6/2023 |
7.1.5 | 172 | 6/2/2023 |
7.1.4 | 158 | 6/2/2023 |
7.1.3 | 181 | 6/1/2023 |
7.1.2 | 170 | 5/31/2023 |
7.1.1 | 155 | 5/31/2023 |
7.1.0 | 167 | 5/25/2023 |
7.0.1 | 167 | 5/23/2023 |
7.0.0 | 174 | 4/26/2023 |
0.0.4 | 217 | 4/25/2023 |
0.0.3 | 179 | 4/24/2023 |
0.0.2 | 179 | 4/23/2023 |
0.0.1 | 199 | 4/4/2023 |