ManagedCode.Orleans.SignalR.Server 8.1.1

Prefix Reserved
dotnet add package ManagedCode.Orleans.SignalR.Server --version 8.1.1                
NuGet\Install-Package ManagedCode.Orleans.SignalR.Server -Version 8.1.1                
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="ManagedCode.Orleans.SignalR.Server" Version="8.1.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add ManagedCode.Orleans.SignalR.Server --version 8.1.1                
#r "nuget: ManagedCode.Orleans.SignalR.Server, 8.1.1"                
#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 ManagedCode.Orleans.SignalR.Server as a Cake Addin
#addin nuget:?package=ManagedCode.Orleans.SignalR.Server&version=8.1.1

// Install ManagedCode.Orleans.SignalR.Server as a Cake Tool
#tool nuget:?package=ManagedCode.Orleans.SignalR.Server&version=8.1.1                

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.ConfigureOrleansSignalR();
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 Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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.

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 427 6/19/2024
8.1.0 285 5/13/2024
7.2.1 1,696 9/12/2023
7.1.6 175 6/6/2023
7.1.5 130 6/2/2023
7.1.4 128 6/2/2023
7.1.3 135 6/1/2023
7.1.2 136 5/31/2023
7.1.1 145 5/31/2023
7.1.0 140 5/25/2023
7.0.1 151 5/23/2023
7.0.0 173 4/26/2023
0.0.4 170 4/25/2023
0.0.3 188 4/24/2023
0.0.2 163 4/23/2023
0.0.1 175 4/4/2023