{"adoption": {"forks": 2247, "observed_at": "2026-08-28T04:10:31.038834+00:00", "stars": 9402}, "canonical_url": "https://ross.abutalabs.com/products/signalr", "card": {"archived": false, "artifact_type": "library", "description": "Incredibly simple real-time web for .NET", "domain": ["web-development", "backend", "apis"], "enriched": true, "function": ["websocket", "rpc", "web-framework", "middleware"], "health_score": 46, "homepage": "http://signalr.net", "language": "C#", "license": "NOASSERTION", "license_family": "other", "maturity": "maintenance", "member_repos": ["SignalR/SignalR"], "name": "SignalR/SignalR", "platform": ["dotnet", "windows"], "pushed_at": "2025-09-18T16:42:20+00:00", "repo": "SignalR/SignalR", "stars": 9402, "tags": ["real-time-web", "server-push", "aspnet", "long-polling", "hubs", "dotnet-framework", "legacy", "real-time", "linux", "macos", "web-server"], "topics": ["signalr", "c-sharp", "asp"], "urls": [], "use_cases": ["push live updates from server to browser clients", "build a real-time chat application in ASP.NET", "stream dashboard or monitoring data without page refreshes", "implement high-frequency updates for real-time games", "replace ajax long polling with a simpler push model", "broadcast notifications to all connected clients"], "what_it_is": "ASP.NET SignalR is a .NET library that makes it simple to add real-time web functionality to ASP.NET (System.Web/Katana) applications, letting server-side code push content to connected clients instantly. It abstracts transports like WebSockets and long polling behind a simple hub programming model.", "when_to_avoid": ["you are starting a new project - use ASP.NET Core SignalR instead, as this repo is in maintenance mode with no new features", "you need a managed, scalable hosting option - consider Azure SignalR Service", "your stack is not .NET"], "when_to_choose": ["you maintain a legacy .NET Framework / System.Web or Katana ASP.NET app that needs real-time push", "you want a simple hub-based RPC model for server-to-client messaging", "you need automatic transport fallback (WebSockets, SSE, long polling)"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/signalr", "repo": "SignalR/SignalR", "role": "main", "score": 42}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.038834+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:22:10.983013+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "737a35187dd63afcb7bbba04ea3491d0c03ab8514939f1604920709647500e95", "fetched_at": "2026-08-28T04:10:31.038834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/SignalR/SignalR"}, {"content_hash": "3ae3fbca330dbb95783c8307932208dca05110c82dfd69e4fa3d45bd3b3727fb", "fetched_at": "2026-08-29T08:22:21.956802+00:00", "kind": "homepage", "missing": false, "url": "http://signalr.net"}, {"content_hash": "f29800be2b9ae4b775ece31dacaeb35b33518b56e27f91d3a02ad75cfd4ce1e1", "fetched_at": "2026-08-29T08:22:21.968256+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/docs"}, {"content_hash": "efa9016b58aa003649863ebdd158397743e4e1b4e5ae1ef5a2bfa0d9e9ff9b1d", "fetched_at": "2026-08-29T08:22:21.965813+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/en-us/dotnet"}, {"content_hash": "510fd11cbd48dc33ef485bba9ec17502d54cdd869df24a0cf227c0ad0f80c908", "fetched_at": "2026-08-29T08:22:21.970265+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/aspnet/core/signalr/introduction"}, {"content_hash": "9c43425507e843059fe049acfbf3bd592cab636a66d112e965c334add1b2af65", "fetched_at": "2026-08-29T08:22:21.972141+00:00", "kind": "site_page", "missing": false, "url": "https://dotnet.microsoft.com/en-us/apps/aspnet/signalr/service"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.038834+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:22:10.983013+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "737a35187dd63afcb7bbba04ea3491d0c03ab8514939f1604920709647500e95", "fetched_at": "2026-08-28T04:10:31.038834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/SignalR/SignalR"}, {"content_hash": "3ae3fbca330dbb95783c8307932208dca05110c82dfd69e4fa3d45bd3b3727fb", "fetched_at": "2026-08-29T08:22:21.956802+00:00", "kind": "homepage", "missing": false, "url": "http://signalr.net"}, {"content_hash": "f29800be2b9ae4b775ece31dacaeb35b33518b56e27f91d3a02ad75cfd4ce1e1", "fetched_at": "2026-08-29T08:22:21.968256+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/docs"}, {"content_hash": "efa9016b58aa003649863ebdd158397743e4e1b4e5ae1ef5a2bfa0d9e9ff9b1d", "fetched_at": "2026-08-29T08:22:21.965813+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/en-us/dotnet"}, {"content_hash": "510fd11cbd48dc33ef485bba9ec17502d54cdd869df24a0cf227c0ad0f80c908", "fetched_at": "2026-08-29T08:22:21.970265+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/aspnet/core/signalr/introduction"}, {"content_hash": "9c43425507e843059fe049acfbf3bd592cab636a66d112e965c334add1b2af65", "fetched_at": "2026-08-29T08:22:21.972141+00:00", "kind": "site_page", "missing": false, "url": "https://dotnet.microsoft.com/en-us/apps/aspnet/signalr/service"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:22:10.983013+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "737a35187dd63afcb7bbba04ea3491d0c03ab8514939f1604920709647500e95", "fetched_at": "2026-08-28T04:10:31.038834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/SignalR/SignalR"}, {"content_hash": "3ae3fbca330dbb95783c8307932208dca05110c82dfd69e4fa3d45bd3b3727fb", "fetched_at": "2026-08-29T08:22:21.956802+00:00", "kind": "homepage", "missing": false, "url": "http://signalr.net"}, {"content_hash": "f29800be2b9ae4b775ece31dacaeb35b33518b56e27f91d3a02ad75cfd4ce1e1", "fetched_at": "2026-08-29T08:22:21.968256+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/docs"}, {"content_hash": "efa9016b58aa003649863ebdd158397743e4e1b4e5ae1ef5a2bfa0d9e9ff9b1d", "fetched_at": "2026-08-29T08:22:21.965813+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/en-us/dotnet"}, {"content_hash": "510fd11cbd48dc33ef485bba9ec17502d54cdd869df24a0cf227c0ad0f80c908", "fetched_at": "2026-08-29T08:22:21.970265+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/aspnet/core/signalr/introduction"}, {"content_hash": "9c43425507e843059fe049acfbf3bd592cab636a66d112e965c334add1b2af65", "fetched_at": "2026-08-29T08:22:21.972141+00:00", "kind": "site_page", "missing": false, "url": "https://dotnet.microsoft.com/en-us/apps/aspnet/signalr/service"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.038834+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.038834+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.038834+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:22:10.983013+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "737a35187dd63afcb7bbba04ea3491d0c03ab8514939f1604920709647500e95", "fetched_at": "2026-08-28T04:10:31.038834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/SignalR/SignalR"}, {"content_hash": "3ae3fbca330dbb95783c8307932208dca05110c82dfd69e4fa3d45bd3b3727fb", "fetched_at": "2026-08-29T08:22:21.956802+00:00", "kind": "homepage", "missing": false, "url": "http://signalr.net"}, {"content_hash": "f29800be2b9ae4b775ece31dacaeb35b33518b56e27f91d3a02ad75cfd4ce1e1", "fetched_at": "2026-08-29T08:22:21.968256+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/docs"}, {"content_hash": "efa9016b58aa003649863ebdd158397743e4e1b4e5ae1ef5a2bfa0d9e9ff9b1d", "fetched_at": "2026-08-29T08:22:21.965813+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/en-us/dotnet"}, {"content_hash": "510fd11cbd48dc33ef485bba9ec17502d54cdd869df24a0cf227c0ad0f80c908", "fetched_at": "2026-08-29T08:22:21.970265+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/aspnet/core/signalr/introduction"}, {"content_hash": "9c43425507e843059fe049acfbf3bd592cab636a66d112e965c334add1b2af65", "fetched_at": "2026-08-29T08:22:21.972141+00:00", "kind": "site_page", "missing": false, "url": "https://dotnet.microsoft.com/en-us/apps/aspnet/signalr/service"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.038834+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.038834+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:22:10.983013+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "737a35187dd63afcb7bbba04ea3491d0c03ab8514939f1604920709647500e95", "fetched_at": "2026-08-28T04:10:31.038834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/SignalR/SignalR"}, {"content_hash": "3ae3fbca330dbb95783c8307932208dca05110c82dfd69e4fa3d45bd3b3727fb", "fetched_at": "2026-08-29T08:22:21.956802+00:00", "kind": "homepage", "missing": false, "url": "http://signalr.net"}, {"content_hash": "f29800be2b9ae4b775ece31dacaeb35b33518b56e27f91d3a02ad75cfd4ce1e1", "fetched_at": "2026-08-29T08:22:21.968256+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/docs"}, {"content_hash": "efa9016b58aa003649863ebdd158397743e4e1b4e5ae1ef5a2bfa0d9e9ff9b1d", "fetched_at": "2026-08-29T08:22:21.965813+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/en-us/dotnet"}, {"content_hash": "510fd11cbd48dc33ef485bba9ec17502d54cdd869df24a0cf227c0ad0f80c908", "fetched_at": "2026-08-29T08:22:21.970265+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/aspnet/core/signalr/introduction"}, {"content_hash": "9c43425507e843059fe049acfbf3bd592cab636a66d112e965c334add1b2af65", "fetched_at": "2026-08-29T08:22:21.972141+00:00", "kind": "site_page", "missing": false, "url": "https://dotnet.microsoft.com/en-us/apps/aspnet/signalr/service"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.038834+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.038834+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.038834+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:22:10.983013+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "737a35187dd63afcb7bbba04ea3491d0c03ab8514939f1604920709647500e95", "fetched_at": "2026-08-28T04:10:31.038834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/SignalR/SignalR"}, {"content_hash": "3ae3fbca330dbb95783c8307932208dca05110c82dfd69e4fa3d45bd3b3727fb", "fetched_at": "2026-08-29T08:22:21.956802+00:00", "kind": "homepage", "missing": false, "url": "http://signalr.net"}, {"content_hash": "f29800be2b9ae4b775ece31dacaeb35b33518b56e27f91d3a02ad75cfd4ce1e1", "fetched_at": "2026-08-29T08:22:21.968256+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/docs"}, {"content_hash": "efa9016b58aa003649863ebdd158397743e4e1b4e5ae1ef5a2bfa0d9e9ff9b1d", "fetched_at": "2026-08-29T08:22:21.965813+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/en-us/dotnet"}, {"content_hash": "510fd11cbd48dc33ef485bba9ec17502d54cdd869df24a0cf227c0ad0f80c908", "fetched_at": "2026-08-29T08:22:21.970265+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/aspnet/core/signalr/introduction"}, {"content_hash": "9c43425507e843059fe049acfbf3bd592cab636a66d112e965c334add1b2af65", "fetched_at": "2026-08-29T08:22:21.972141+00:00", "kind": "site_page", "missing": false, "url": "https://dotnet.microsoft.com/en-us/apps/aspnet/signalr/service"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.038834+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:31.038834+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:22:10.983013+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "737a35187dd63afcb7bbba04ea3491d0c03ab8514939f1604920709647500e95", "fetched_at": "2026-08-28T04:10:31.038834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/SignalR/SignalR"}, {"content_hash": "3ae3fbca330dbb95783c8307932208dca05110c82dfd69e4fa3d45bd3b3727fb", "fetched_at": "2026-08-29T08:22:21.956802+00:00", "kind": "homepage", "missing": false, "url": "http://signalr.net"}, {"content_hash": "f29800be2b9ae4b775ece31dacaeb35b33518b56e27f91d3a02ad75cfd4ce1e1", "fetched_at": "2026-08-29T08:22:21.968256+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/docs"}, {"content_hash": "efa9016b58aa003649863ebdd158397743e4e1b4e5ae1ef5a2bfa0d9e9ff9b1d", "fetched_at": "2026-08-29T08:22:21.965813+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/en-us/dotnet"}, {"content_hash": "510fd11cbd48dc33ef485bba9ec17502d54cdd869df24a0cf227c0ad0f80c908", "fetched_at": "2026-08-29T08:22:21.970265+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/aspnet/core/signalr/introduction"}, {"content_hash": "9c43425507e843059fe049acfbf3bd592cab636a66d112e965c334add1b2af65", "fetched_at": "2026-08-29T08:22:21.972141+00:00", "kind": "site_page", "missing": false, "url": "https://dotnet.microsoft.com/en-us/apps/aspnet/signalr/service"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:22:10.983013+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "737a35187dd63afcb7bbba04ea3491d0c03ab8514939f1604920709647500e95", "fetched_at": "2026-08-28T04:10:31.038834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/SignalR/SignalR"}, {"content_hash": "3ae3fbca330dbb95783c8307932208dca05110c82dfd69e4fa3d45bd3b3727fb", "fetched_at": "2026-08-29T08:22:21.956802+00:00", "kind": "homepage", "missing": false, "url": "http://signalr.net"}, {"content_hash": "f29800be2b9ae4b775ece31dacaeb35b33518b56e27f91d3a02ad75cfd4ce1e1", "fetched_at": "2026-08-29T08:22:21.968256+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/docs"}, {"content_hash": "efa9016b58aa003649863ebdd158397743e4e1b4e5ae1ef5a2bfa0d9e9ff9b1d", "fetched_at": "2026-08-29T08:22:21.965813+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/en-us/dotnet"}, {"content_hash": "510fd11cbd48dc33ef485bba9ec17502d54cdd869df24a0cf227c0ad0f80c908", "fetched_at": "2026-08-29T08:22:21.970265+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/aspnet/core/signalr/introduction"}, {"content_hash": "9c43425507e843059fe049acfbf3bd592cab636a66d112e965c334add1b2af65", "fetched_at": "2026-08-29T08:22:21.972141+00:00", "kind": "site_page", "missing": false, "url": "https://dotnet.microsoft.com/en-us/apps/aspnet/signalr/service"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:22:10.983013+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "737a35187dd63afcb7bbba04ea3491d0c03ab8514939f1604920709647500e95", "fetched_at": "2026-08-28T04:10:31.038834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/SignalR/SignalR"}, {"content_hash": "3ae3fbca330dbb95783c8307932208dca05110c82dfd69e4fa3d45bd3b3727fb", "fetched_at": "2026-08-29T08:22:21.956802+00:00", "kind": "homepage", "missing": false, "url": "http://signalr.net"}, {"content_hash": "f29800be2b9ae4b775ece31dacaeb35b33518b56e27f91d3a02ad75cfd4ce1e1", "fetched_at": "2026-08-29T08:22:21.968256+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/docs"}, {"content_hash": "efa9016b58aa003649863ebdd158397743e4e1b4e5ae1ef5a2bfa0d9e9ff9b1d", "fetched_at": "2026-08-29T08:22:21.965813+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/en-us/dotnet"}, {"content_hash": "510fd11cbd48dc33ef485bba9ec17502d54cdd869df24a0cf227c0ad0f80c908", "fetched_at": "2026-08-29T08:22:21.970265+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/aspnet/core/signalr/introduction"}, {"content_hash": "9c43425507e843059fe049acfbf3bd592cab636a66d112e965c334add1b2af65", "fetched_at": "2026-08-29T08:22:21.972141+00:00", "kind": "site_page", "missing": false, "url": "https://dotnet.microsoft.com/en-us/apps/aspnet/signalr/service"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:22:10.983013+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "737a35187dd63afcb7bbba04ea3491d0c03ab8514939f1604920709647500e95", "fetched_at": "2026-08-28T04:10:31.038834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/SignalR/SignalR"}, {"content_hash": "3ae3fbca330dbb95783c8307932208dca05110c82dfd69e4fa3d45bd3b3727fb", "fetched_at": "2026-08-29T08:22:21.956802+00:00", "kind": "homepage", "missing": false, "url": "http://signalr.net"}, {"content_hash": "f29800be2b9ae4b775ece31dacaeb35b33518b56e27f91d3a02ad75cfd4ce1e1", "fetched_at": "2026-08-29T08:22:21.968256+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/docs"}, {"content_hash": "efa9016b58aa003649863ebdd158397743e4e1b4e5ae1ef5a2bfa0d9e9ff9b1d", "fetched_at": "2026-08-29T08:22:21.965813+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/en-us/dotnet"}, {"content_hash": "510fd11cbd48dc33ef485bba9ec17502d54cdd869df24a0cf227c0ad0f80c908", "fetched_at": "2026-08-29T08:22:21.970265+00:00", "kind": "site_page", "missing": false, "url": "https://learn.microsoft.com/aspnet/core/signalr/introduction"}, {"content_hash": "9c43425507e843059fe049acfbf3bd592cab636a66d112e965c334add1b2af65", "fetched_at": "2026-08-29T08:22:21.972141+00:00", "kind": "site_page", "missing": false, "url": "https://dotnet.microsoft.com/en-us/apps/aspnet/signalr/service"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 42, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5521, "days_push": 349, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 42, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}