Cocoar.SignalARRR.Client.FullFramework
4.1.0
dotnet add package Cocoar.SignalARRR.Client.FullFramework --version 4.1.0
NuGet\Install-Package Cocoar.SignalARRR.Client.FullFramework -Version 4.1.0
<PackageReference Include="Cocoar.SignalARRR.Client.FullFramework" Version="4.1.0" />
<PackageVersion Include="Cocoar.SignalARRR.Client.FullFramework" Version="4.1.0" />
<PackageReference Include="Cocoar.SignalARRR.Client.FullFramework" />
paket add Cocoar.SignalARRR.Client.FullFramework --version 4.1.0
#r "nuget: Cocoar.SignalARRR.Client.FullFramework, 4.1.0"
#:package Cocoar.SignalARRR.Client.FullFramework@4.1.0
#addin nuget:?package=Cocoar.SignalARRR.Client.FullFramework&version=4.1.0
#tool nuget:?package=Cocoar.SignalARRR.Client.FullFramework&version=4.1.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 |
Cocoar.SignalARRR.Client.FullFramework |
Client for .NET Framework 4.6.2+ — typed proxies, streaming, file transfer |
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. - Four clients — .NET, .NET Framework, TypeScript/JavaScript, Swift
- Typed broadcasts —
WithHub<T>().WithGroup().SendAsync<T>()for groups and filtered clients
Framework Support
| Target | Version |
|---|---|
| .NET (server + client) | .NET 8 / .NET 9 / .NET 10 |
| .NET Framework (client) | 4.6.2+ (via Cocoar.SignalARRR.Client.FullFramework) |
| 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 | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Cocoar.Reflectensions (>= 1.0.0)
- Cocoar.Reflectensions.Invoke (>= 1.0.0)
- Cocoar.SignalARRR.Common (>= 4.1.0)
- Microsoft.AspNetCore.SignalR.Client (>= 8.0.25)
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.5)
- System.Reflection.DispatchProxy (>= 4.7.1)
- System.Threading.Channels (>= 8.0.0)
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.1.0 | 29 | 3/26/2026 |