(pronounced: "Signal Player")
A modern, extensible .NET 10 library for building real-time collaborative experiences using SignalR.
SignalPlayR provides drop-in multiplayer state synchronization for plain text, rich text (Quill Deltas), ephemeral presence, live remote carets, and threaded comments.
- 👥 Multi-User Presence & Sessions: Track online participants with automatic cleanup on abrupt disconnects.
- 📝 Multi-Field Document Synchronization: Synchronize multiple independent text fields per session room.
- 🖋️ Rich Text Delta Sync: Full support for Quill Deltas and remote collaborative carets via
quill-cursors. - 💬 Threaded Comments & Discussions: In-document comments with reply threads and resolve statuses.
- 🔭 Native OpenTelemetry & Structured Logging: Zero-allocation source-generated logging with built-in
ActivitySourceandMetermetrics. - 🧩 Pluggable Architecture: Ship with in-memory engines out of the box or swap in Redis, EF Core, or distributed databases.
dotnet add package SignalPlayR.Coreusing SignalPlayR.Core.Extensions;
using SignalPlayR.Core.Hubs;
var builder = WebApplication.CreateBuilder(args);
// Register default in-memory providers & SignalR services
builder.Services.AddSignalPlayR();
var app = builder.Build();
// Map the real-time endpoint
app.MapHub<SignalPlayRHub>("/signalplayrhub");
app.Run();Wire SignalPlayR's telemetry directly into your OpenTelemetry pipeline:
builder.Services.AddOpenTelemetry()
.WithTracing(tracing => tracing
.AddSource("SignalPlayR.Core")
.AddAspNetCoreInstrumentation()
.AddOtlpExporter())
.WithMetrics(metrics => metrics
.AddMeter("SignalPlayR.Core")
.AddOtlpExporter());MIT License. Created with ❤️ for high-performance .NET applications.