{"adoption": {"forks": 204, "observed_at": "2026-08-28T04:05:25.571220+00:00", "stars": 1709}, "canonical_url": "https://ross.abutalabs.com/products/nativewebsocket", "card": {"archived": false, "artifact_type": "library", "description": "🔌 WebSocket client for Unity/MonoGame/Godot Mono - with no external dependencies (WebGL, Native, Android, iOS, UWP)", "domain": ["networking", "cross-platform"], "enriched": true, "function": ["websocket"], "health_score": 98, "homepage": null, "language": "C#", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["endel/NativeWebSocket"], "name": "endel/NativeWebSocket", "platform": ["dotnet", "game-engine", "cross-platform", "browser", "windows"], "pushed_at": "2026-08-07T02:22:02+00:00", "repo": "endel/NativeWebSocket", "stars": 1709, "tags": ["unity", "monogame", "godot", "webgl", "csharp", "websocket-client", "no-external-dependencies", "main-thread-dispatching", "real-time-messaging", "game-development", "android", "ios"], "topics": ["websockets", "dotnet", "godot-mono", "monogame", "unity"], "urls": [], "use_cases": ["add websocket support to a Unity game", "websocket client for Godot C# projects", "use WebSockets in Unity WebGL browser builds", "c# websocket library with no external DLLs", "receive websocket messages on the main thread in a game engine", "connect a MonoGame game to a websocket server", "real-time messaging over websockets on Android and iOS with .NET"], "what_it_is": "NativeWebSocket is a dependency-free WebSocket client library for .NET that works in Unity, MonoGame, Godot (C#), and any other .NET project. It builds on the built-in System.Net.WebSockets API, adds WebGL/HTML5 support for Unity builds, and dispatches events back to the main thread via SynchronizationContext.", "when_to_avoid": ["You need a full game networking stack with reliability, channels, or transport beyond raw WebSocket frames", "You are building a plain server-side or desktop .NET app where System.Net.WebSockets or SignalR already suffices", "You require a clearly verified license, since the repository license is marked as unverified (NOASSERTION)"], "when_to_choose": ["You need WebSockets in Unity, MonoGame, or Godot C# without external DLL dependencies", "You are targeting Unity WebGL builds where standard .NET websocket code needs conditional compilation", "You want websocket callbacks automatically marshaled to the engine's main thread", "You want a very small, simple client API (Connect, Send, SendText, Close) for game networking"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/nativewebsocket", "repo": "endel/NativeWebSocket", "role": "main", "score": 97}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:25.571220+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:36:58.080750+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5df815740f1f37e8ff1b934f14dd432baf603ef310a43745f4f56af6cc71c1c", "fetched_at": "2026-08-28T04:05:25.571220+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endel/NativeWebSocket"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:25.571220+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:36:58.080750+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5df815740f1f37e8ff1b934f14dd432baf603ef310a43745f4f56af6cc71c1c", "fetched_at": "2026-08-28T04:05:25.571220+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endel/NativeWebSocket"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:36:58.080750+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5df815740f1f37e8ff1b934f14dd432baf603ef310a43745f4f56af6cc71c1c", "fetched_at": "2026-08-28T04:05:25.571220+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endel/NativeWebSocket"}], "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:05:25.571220+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:25.571220+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:25.571220+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:36:58.080750+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5df815740f1f37e8ff1b934f14dd432baf603ef310a43745f4f56af6cc71c1c", "fetched_at": "2026-08-28T04:05:25.571220+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endel/NativeWebSocket"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:25.571220+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:25.571220+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:36:58.080750+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5df815740f1f37e8ff1b934f14dd432baf603ef310a43745f4f56af6cc71c1c", "fetched_at": "2026-08-28T04:05:25.571220+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endel/NativeWebSocket"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:25.571220+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:25.571220+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:25.571220+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:36:58.080750+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5df815740f1f37e8ff1b934f14dd432baf603ef310a43745f4f56af6cc71c1c", "fetched_at": "2026-08-28T04:05:25.571220+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endel/NativeWebSocket"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:25.571220+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:25.571220+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:36:58.080750+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5df815740f1f37e8ff1b934f14dd432baf603ef310a43745f4f56af6cc71c1c", "fetched_at": "2026-08-28T04:05:25.571220+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endel/NativeWebSocket"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:36:58.080750+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5df815740f1f37e8ff1b934f14dd432baf603ef310a43745f4f56af6cc71c1c", "fetched_at": "2026-08-28T04:05:25.571220+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endel/NativeWebSocket"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:36:58.080750+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5df815740f1f37e8ff1b934f14dd432baf603ef310a43745f4f56af6cc71c1c", "fetched_at": "2026-08-28T04:05:25.571220+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endel/NativeWebSocket"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:36:58.080750+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e5df815740f1f37e8ff1b934f14dd432baf603ef310a43745f4f56af6cc71c1c", "fetched_at": "2026-08-28T04:05:25.571220+00:00", "kind": "readme", "missing": false, "url": "https://github.com/endel/NativeWebSocket"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 96, "longevity": 100, "rhythm": 96}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2584, "days_push": 27, "days_rel": 27, "gap_med": 15, "n_releases_24m": 6}, "score": 97, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}