{"adoption": {"forks": 787, "observed_at": "2026-08-28T04:09:43.408595+00:00", "stars": 6437}, "canonical_url": "https://ross.abutalabs.com/products/ratchetphp-ratchet", "card": {"archived": false, "artifact_type": "library", "description": "Asynchronous WebSocket server", "domain": ["web-development", "backend", "apis"], "enriched": true, "function": ["websocket", "http-server", "middleware", "routing"], "health_score": 72, "homepage": "http://socketo.me", "language": "PHP", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["ratchetphp/Ratchet"], "name": "ratchetphp/Ratchet", "platform": ["php", "windows", "cli"], "pushed_at": "2026-06-14T13:01:18+00:00", "repo": "ratchetphp/Ratchet", "stars": 6437, "tags": ["async", "event-driven", "real-time", "wamp", "reactphp", "composer", "linux", "macos"], "topics": ["websocket", "ratchet", "php", "websockets", "async"], "urls": [], "use_cases": ["build a real-time chat server in PHP", "push live notifications to browsers over websockets", "create a bi-directional event-driven connection between client and server", "add websocket support to an existing PHP application", "implement a live dashboard with streaming updates", "route websocket connections to different handlers by path"], "what_it_is": "Ratchet is a loosely coupled PHP library for asynchronously serving WebSockets, letting developers build real-time, bi-directional applications through composable components. It provides an event-driven server built on ReactPHP with routing, session handling, and WAMP support.", "when_to_avoid": ["you need a modern, actively evolving websocket solution with latest PHP support", "you cannot run long-lived shell processes or configure reverse proxies", "your project is in another language or you prefer Node.js/Go websocket servers"], "when_to_choose": ["you need real-time websocket servers in a PHP stack", "you want composable, reusable server components with simple interfaces", "you want a battle-tested library that passes the Autobahn websocket test suite"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ratchetphp-ratchet", "repo": "ratchetphp/Ratchet", "role": "main", "score": 62}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:43.408595+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:44:43.252644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "540aff433ce57293072bb978a4a4bf47ca54a3103aa59d2fc9f30ea3869d9471", "fetched_at": "2026-08-28T04:09:43.408595+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ratchetphp/Ratchet"}, {"content_hash": "bbbb2badbaac1c40431265db8fc4fa3cf6c4ac373cd411d9a1d5ff05846db96f", "fetched_at": "2026-08-29T08:41:34.426918+00:00", "kind": "homepage", "missing": false, "url": "http://socketo.me"}, {"content_hash": "e5e69c7acc04934df934e2f220afe56599bf084d080645d3fbf943de97651199", "fetched_at": "2026-08-29T08:41:34.429471+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs"}, {"content_hash": "d8aa4fb8f4960b1194ac07c09ac5e747a5c549f79ac60146d9dde4c0de296084", "fetched_at": "2026-08-29T08:41:34.434859+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/hello-world"}, {"content_hash": "75f4572e95cd79e360b9712cf95cb0d3b6c28ee17e03a2edc3fc4af430d1568e", "fetched_at": "2026-08-29T08:41:34.437345+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/design"}, {"content_hash": "d8ce249298549bab2abcf0ff0261e961e562408af0548742992312959edd9f89", "fetched_at": "2026-08-29T08:41:34.432634+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/api/namespace-Ratchet.html"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:43.408595+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:44:43.252644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "540aff433ce57293072bb978a4a4bf47ca54a3103aa59d2fc9f30ea3869d9471", "fetched_at": "2026-08-28T04:09:43.408595+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ratchetphp/Ratchet"}, {"content_hash": "bbbb2badbaac1c40431265db8fc4fa3cf6c4ac373cd411d9a1d5ff05846db96f", "fetched_at": "2026-08-29T08:41:34.426918+00:00", "kind": "homepage", "missing": false, "url": "http://socketo.me"}, {"content_hash": "e5e69c7acc04934df934e2f220afe56599bf084d080645d3fbf943de97651199", "fetched_at": "2026-08-29T08:41:34.429471+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs"}, {"content_hash": "d8aa4fb8f4960b1194ac07c09ac5e747a5c549f79ac60146d9dde4c0de296084", "fetched_at": "2026-08-29T08:41:34.434859+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/hello-world"}, {"content_hash": "75f4572e95cd79e360b9712cf95cb0d3b6c28ee17e03a2edc3fc4af430d1568e", "fetched_at": "2026-08-29T08:41:34.437345+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/design"}, {"content_hash": "d8ce249298549bab2abcf0ff0261e961e562408af0548742992312959edd9f89", "fetched_at": "2026-08-29T08:41:34.432634+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/api/namespace-Ratchet.html"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:44:43.252644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "540aff433ce57293072bb978a4a4bf47ca54a3103aa59d2fc9f30ea3869d9471", "fetched_at": "2026-08-28T04:09:43.408595+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ratchetphp/Ratchet"}, {"content_hash": "bbbb2badbaac1c40431265db8fc4fa3cf6c4ac373cd411d9a1d5ff05846db96f", "fetched_at": "2026-08-29T08:41:34.426918+00:00", "kind": "homepage", "missing": false, "url": "http://socketo.me"}, {"content_hash": "e5e69c7acc04934df934e2f220afe56599bf084d080645d3fbf943de97651199", "fetched_at": "2026-08-29T08:41:34.429471+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs"}, {"content_hash": "d8aa4fb8f4960b1194ac07c09ac5e747a5c549f79ac60146d9dde4c0de296084", "fetched_at": "2026-08-29T08:41:34.434859+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/hello-world"}, {"content_hash": "75f4572e95cd79e360b9712cf95cb0d3b6c28ee17e03a2edc3fc4af430d1568e", "fetched_at": "2026-08-29T08:41:34.437345+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/design"}, {"content_hash": "d8ce249298549bab2abcf0ff0261e961e562408af0548742992312959edd9f89", "fetched_at": "2026-08-29T08:41:34.432634+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/api/namespace-Ratchet.html"}], "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:09:43.408595+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:43.408595+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:43.408595+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:44:43.252644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "540aff433ce57293072bb978a4a4bf47ca54a3103aa59d2fc9f30ea3869d9471", "fetched_at": "2026-08-28T04:09:43.408595+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ratchetphp/Ratchet"}, {"content_hash": "bbbb2badbaac1c40431265db8fc4fa3cf6c4ac373cd411d9a1d5ff05846db96f", "fetched_at": "2026-08-29T08:41:34.426918+00:00", "kind": "homepage", "missing": false, "url": "http://socketo.me"}, {"content_hash": "e5e69c7acc04934df934e2f220afe56599bf084d080645d3fbf943de97651199", "fetched_at": "2026-08-29T08:41:34.429471+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs"}, {"content_hash": "d8aa4fb8f4960b1194ac07c09ac5e747a5c549f79ac60146d9dde4c0de296084", "fetched_at": "2026-08-29T08:41:34.434859+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/hello-world"}, {"content_hash": "75f4572e95cd79e360b9712cf95cb0d3b6c28ee17e03a2edc3fc4af430d1568e", "fetched_at": "2026-08-29T08:41:34.437345+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/design"}, {"content_hash": "d8ce249298549bab2abcf0ff0261e961e562408af0548742992312959edd9f89", "fetched_at": "2026-08-29T08:41:34.432634+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/api/namespace-Ratchet.html"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:43.408595+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:43.408595+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:44:43.252644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "540aff433ce57293072bb978a4a4bf47ca54a3103aa59d2fc9f30ea3869d9471", "fetched_at": "2026-08-28T04:09:43.408595+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ratchetphp/Ratchet"}, {"content_hash": "bbbb2badbaac1c40431265db8fc4fa3cf6c4ac373cd411d9a1d5ff05846db96f", "fetched_at": "2026-08-29T08:41:34.426918+00:00", "kind": "homepage", "missing": false, "url": "http://socketo.me"}, {"content_hash": "e5e69c7acc04934df934e2f220afe56599bf084d080645d3fbf943de97651199", "fetched_at": "2026-08-29T08:41:34.429471+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs"}, {"content_hash": "d8aa4fb8f4960b1194ac07c09ac5e747a5c549f79ac60146d9dde4c0de296084", "fetched_at": "2026-08-29T08:41:34.434859+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/hello-world"}, {"content_hash": "75f4572e95cd79e360b9712cf95cb0d3b6c28ee17e03a2edc3fc4af430d1568e", "fetched_at": "2026-08-29T08:41:34.437345+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/design"}, {"content_hash": "d8ce249298549bab2abcf0ff0261e961e562408af0548742992312959edd9f89", "fetched_at": "2026-08-29T08:41:34.432634+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/api/namespace-Ratchet.html"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:43.408595+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:43.408595+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:43.408595+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:44:43.252644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "540aff433ce57293072bb978a4a4bf47ca54a3103aa59d2fc9f30ea3869d9471", "fetched_at": "2026-08-28T04:09:43.408595+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ratchetphp/Ratchet"}, {"content_hash": "bbbb2badbaac1c40431265db8fc4fa3cf6c4ac373cd411d9a1d5ff05846db96f", "fetched_at": "2026-08-29T08:41:34.426918+00:00", "kind": "homepage", "missing": false, "url": "http://socketo.me"}, {"content_hash": "e5e69c7acc04934df934e2f220afe56599bf084d080645d3fbf943de97651199", "fetched_at": "2026-08-29T08:41:34.429471+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs"}, {"content_hash": "d8aa4fb8f4960b1194ac07c09ac5e747a5c549f79ac60146d9dde4c0de296084", "fetched_at": "2026-08-29T08:41:34.434859+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/hello-world"}, {"content_hash": "75f4572e95cd79e360b9712cf95cb0d3b6c28ee17e03a2edc3fc4af430d1568e", "fetched_at": "2026-08-29T08:41:34.437345+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/design"}, {"content_hash": "d8ce249298549bab2abcf0ff0261e961e562408af0548742992312959edd9f89", "fetched_at": "2026-08-29T08:41:34.432634+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/api/namespace-Ratchet.html"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:43.408595+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:43.408595+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:44:43.252644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "540aff433ce57293072bb978a4a4bf47ca54a3103aa59d2fc9f30ea3869d9471", "fetched_at": "2026-08-28T04:09:43.408595+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ratchetphp/Ratchet"}, {"content_hash": "bbbb2badbaac1c40431265db8fc4fa3cf6c4ac373cd411d9a1d5ff05846db96f", "fetched_at": "2026-08-29T08:41:34.426918+00:00", "kind": "homepage", "missing": false, "url": "http://socketo.me"}, {"content_hash": "e5e69c7acc04934df934e2f220afe56599bf084d080645d3fbf943de97651199", "fetched_at": "2026-08-29T08:41:34.429471+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs"}, {"content_hash": "d8aa4fb8f4960b1194ac07c09ac5e747a5c549f79ac60146d9dde4c0de296084", "fetched_at": "2026-08-29T08:41:34.434859+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/hello-world"}, {"content_hash": "75f4572e95cd79e360b9712cf95cb0d3b6c28ee17e03a2edc3fc4af430d1568e", "fetched_at": "2026-08-29T08:41:34.437345+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/design"}, {"content_hash": "d8ce249298549bab2abcf0ff0261e961e562408af0548742992312959edd9f89", "fetched_at": "2026-08-29T08:41:34.432634+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/api/namespace-Ratchet.html"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:44:43.252644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "540aff433ce57293072bb978a4a4bf47ca54a3103aa59d2fc9f30ea3869d9471", "fetched_at": "2026-08-28T04:09:43.408595+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ratchetphp/Ratchet"}, {"content_hash": "bbbb2badbaac1c40431265db8fc4fa3cf6c4ac373cd411d9a1d5ff05846db96f", "fetched_at": "2026-08-29T08:41:34.426918+00:00", "kind": "homepage", "missing": false, "url": "http://socketo.me"}, {"content_hash": "e5e69c7acc04934df934e2f220afe56599bf084d080645d3fbf943de97651199", "fetched_at": "2026-08-29T08:41:34.429471+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs"}, {"content_hash": "d8aa4fb8f4960b1194ac07c09ac5e747a5c549f79ac60146d9dde4c0de296084", "fetched_at": "2026-08-29T08:41:34.434859+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/hello-world"}, {"content_hash": "75f4572e95cd79e360b9712cf95cb0d3b6c28ee17e03a2edc3fc4af430d1568e", "fetched_at": "2026-08-29T08:41:34.437345+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/design"}, {"content_hash": "d8ce249298549bab2abcf0ff0261e961e562408af0548742992312959edd9f89", "fetched_at": "2026-08-29T08:41:34.432634+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/api/namespace-Ratchet.html"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:44:43.252644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "540aff433ce57293072bb978a4a4bf47ca54a3103aa59d2fc9f30ea3869d9471", "fetched_at": "2026-08-28T04:09:43.408595+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ratchetphp/Ratchet"}, {"content_hash": "bbbb2badbaac1c40431265db8fc4fa3cf6c4ac373cd411d9a1d5ff05846db96f", "fetched_at": "2026-08-29T08:41:34.426918+00:00", "kind": "homepage", "missing": false, "url": "http://socketo.me"}, {"content_hash": "e5e69c7acc04934df934e2f220afe56599bf084d080645d3fbf943de97651199", "fetched_at": "2026-08-29T08:41:34.429471+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs"}, {"content_hash": "d8aa4fb8f4960b1194ac07c09ac5e747a5c549f79ac60146d9dde4c0de296084", "fetched_at": "2026-08-29T08:41:34.434859+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/hello-world"}, {"content_hash": "75f4572e95cd79e360b9712cf95cb0d3b6c28ee17e03a2edc3fc4af430d1568e", "fetched_at": "2026-08-29T08:41:34.437345+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/design"}, {"content_hash": "d8ce249298549bab2abcf0ff0261e961e562408af0548742992312959edd9f89", "fetched_at": "2026-08-29T08:41:34.432634+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/api/namespace-Ratchet.html"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:44:43.252644+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "540aff433ce57293072bb978a4a4bf47ca54a3103aa59d2fc9f30ea3869d9471", "fetched_at": "2026-08-28T04:09:43.408595+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ratchetphp/Ratchet"}, {"content_hash": "bbbb2badbaac1c40431265db8fc4fa3cf6c4ac373cd411d9a1d5ff05846db96f", "fetched_at": "2026-08-29T08:41:34.426918+00:00", "kind": "homepage", "missing": false, "url": "http://socketo.me"}, {"content_hash": "e5e69c7acc04934df934e2f220afe56599bf084d080645d3fbf943de97651199", "fetched_at": "2026-08-29T08:41:34.429471+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs"}, {"content_hash": "d8aa4fb8f4960b1194ac07c09ac5e747a5c549f79ac60146d9dde4c0de296084", "fetched_at": "2026-08-29T08:41:34.434859+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/hello-world"}, {"content_hash": "75f4572e95cd79e360b9712cf95cb0d3b6c28ee17e03a2edc3fc4af430d1568e", "fetched_at": "2026-08-29T08:41:34.437345+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/docs/design"}, {"content_hash": "d8ce249298549bab2abcf0ff0261e961e562408af0548742992312959edd9f89", "fetched_at": "2026-08-29T08:41:34.432634+00:00", "kind": "site_page", "missing": false, "url": "http://socketo.me/api/namespace-Ratchet.html"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 87, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5252, "days_push": 80, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 62, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}