Cocoar.SignalARRR.Contracts 4.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Cocoar.SignalARRR.Contracts --version 4.0.0
                    
NuGet\Install-Package Cocoar.SignalARRR.Contracts -Version 4.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="Cocoar.SignalARRR.Contracts" Version="4.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Cocoar.SignalARRR.Contracts" Version="4.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Cocoar.SignalARRR.Contracts" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Cocoar.SignalARRR.Contracts --version 4.0.0
                    
#r "nuget: Cocoar.SignalARRR.Contracts, 4.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.
#:package Cocoar.SignalARRR.Contracts@4.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Cocoar.SignalARRR.Contracts&version=4.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Cocoar.SignalARRR.Contracts&version=4.0.0
                    
Install as a Cake Tool

SignalARRR

CI NuGet npm License

Typed bidirectional RPC over ASP.NET Core SignalR.

Server and client call each other's methods through shared interfaces — with compile-time proxy generation, streaming, cancellation propagation, and ASP.NET Core authorization. Clients available for .NET, TypeScript/JavaScript, and Swift.

Read the full documentation

Packages

.NET

Package Purpose
Cocoar.SignalARRR.Contracts [SignalARRRContract] attribute + source generator — reference from shared interface projects
Cocoar.SignalARRR.Server Server-side: HARRR hub, ServerMethods, authorization, ClientManager
Cocoar.SignalARRR.Client Client-side: HARRRConnection, typed proxies, event handlers
Cocoar.SignalARRR.DynamicProxy Opt-in runtime proxy fallback via DispatchProxy

TypeScript / JavaScript

npm install @cocoar/signalarrr

Swift (iOS / macOS)

.package(url: "https://github.com/cocoar-dev/Cocoar.SignalARRR.git", from: "4.0.0")

Quick Start

Define shared interfaces, set up the server, and call methods with full type safety:

// Shared interface
[SignalARRRContract]
public interface IChatHub {
    Task SendMessage(string user, string message);
    Task<List<string>> GetHistory();
}

// Client usage — one line to get a typed proxy
var chat = connection.GetTypedMethods<IChatHub>();
await chat.SendMessage("Alice", "Hello!");
// TypeScript client
const history = await connection.invoke<string[]>('ChatMethods.GetHistory');
// Swift client — @HubProxy macro generates the proxy
@HubProxy protocol IChatHub { ... }
let chat = connection.getTypedMethods(IChatHubProxy.self)

For full setup guides, streaming, authorization, and server-to-client calls, see the documentation.

Features

  • Typed bidirectional RPC — server and client call each other through shared interfaces
  • Compile-time proxy generation — Roslyn source generator (zero reflection)
  • Organized hub methods — split logic across ServerMethods<T> classes with full DI
  • StreamingIAsyncEnumerable<T>, IObservable<T>, ChannelReader<T> in both directions
  • HTTP stream references — file download/upload through SignalR hub methods
  • CancellationToken propagation — server can cancel client operations remotely
  • Authorization — method-level, class-level, and hub-level [Authorize]
  • Server-to-client calls from anywhere — inject ClientManager in controllers, background services, etc.
  • Three clients — .NET, TypeScript/JavaScript, Swift with feature parity

Framework Support

Target Version
.NET (server + client) .NET 10
TypeScript / JavaScript Node.js 22 / modern browsers
Swift (iOS / macOS) Swift 5.10+, iOS 14+ / macOS 11+

Building from Source

# .NET
dotnet build src/Cocoar.SignalARRR.slnx
dotnet test src/Cocoar.SignalARRR.slnx

# TypeScript
cd src/Cocoar.SignalARRR.Typescript && npm install && npm run build

# Swift
swift build && swift test

License

Apache License 2.0 — see LICENSE for details.

Contributing

See CONTRIBUTING.md for guidelines.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Cocoar.SignalARRR.Contracts:

Package Downloads
Cocoar.SignalARRR.Server

SignalARRR server library — typed bidirectional RPC over SignalR with authorization, streaming, server-to-client calls, and ServerMethods organization.

Cocoar.SignalARRR.Client

SignalARRR client library — typed bidirectional RPC over SignalR with streaming, cancellation, and source-generated proxies.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
4.1.0 65 3/26/2026
4.0.0 93 3/23/2026
4.0.0-beta.16 44 3/22/2026
4.0.0-beta.15 35 3/22/2026
4.0.0-beta.8 48 3/3/2026
4.0.0-beta.6 45 3/3/2026
4.0.0-beta.2 49 3/3/2026
0.1.0-beta.85 47 2/28/2026