Cocoar.SignalARRR.Client
4.0.0
dotnet add package Cocoar.SignalARRR.Client --version 4.0.0
NuGet\Install-Package Cocoar.SignalARRR.Client -Version 4.0.0
<PackageReference Include="Cocoar.SignalARRR.Client" Version="4.0.0" />
<PackageVersion Include="Cocoar.SignalARRR.Client" Version="4.0.0" />
<PackageReference Include="Cocoar.SignalARRR.Client" />
paket add Cocoar.SignalARRR.Client --version 4.0.0
#r "nuget: Cocoar.SignalARRR.Client, 4.0.0"
#:package Cocoar.SignalARRR.Client@4.0.0
#addin nuget:?package=Cocoar.SignalARRR.Client&version=4.0.0
#tool nuget:?package=Cocoar.SignalARRR.Client&version=4.0.0
SignalARRR
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.
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 - Streaming —
IAsyncEnumerable<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
ClientManagerin 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 | Versions 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. |
-
net10.0
- Cocoar.Reflectensions (>= 1.0.0)
- Cocoar.Reflectensions.Invoke (>= 1.0.0)
- Cocoar.SignalARRR.Common (>= 4.0.0)
- Cocoar.SignalARRR.Contracts (>= 4.0.0)
- Cocoar.SignalARRR.ProxyGenerator (>= 4.0.0)
- Microsoft.AspNetCore.SignalR.Client (>= 10.0.5)
- Microsoft.AspNetCore.SignalR.Protocols.MessagePack (>= 10.0.5)
- Microsoft.Extensions.DependencyInjection (>= 10.0.5)
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 |
|---|---|---|
| 4.0.0 | 23 | 3/23/2026 |
| 4.0.0-beta.16 | 29 | 3/22/2026 |
| 4.0.0-beta.15 | 27 | 3/22/2026 |
| 4.0.0-beta.8 | 39 | 3/3/2026 |
| 4.0.0-beta.6 | 36 | 3/3/2026 |
| 4.0.0-beta.2 | 39 | 3/3/2026 |
| 0.1.0-beta.85 | 45 | 2/28/2026 |