Product Decisions This Supports
- Whether real-time UX is a roadmap differentiator or table stakes. This package is only the delivery mechanism; the decision it informs is about live notifications, presence, activity feeds, dashboards, or support chat. If real-time is commodity in your market, this is a procurement exercise. If it is core to retention, it is an architecture decision worth funding properly.
- Build vs. buy vs. assemble — with a fourth box on the comparison grid.
orchid/socket adds a self-hosted, PHP-only option alongside Laravel Reverb (first-party), Soketi, Centrifugo/Mercure, and managed Pusher/Ably. The PM framing is total cost per connection: vendor fees versus engineering ownership, on-call, upgrades, and incident risk.
- Stack consolidation as a hiring and ops decision. A PHP-native async server avoids introducing a Node runtime to on-call and keeps the org single-language. That is a resourcing decision as much as a technical one, and it belongs in the build-vs-buy memo explicitly.
- Polling-reduction business case. If the product currently polls for updates, a WebSocket path can cut API and database load and improve perceived latency. Quantify the current polling cost first — that number justifies or kills the investment independent of which provider wins, and it becomes the baseline for every vendor comparison.
- Roadmap sequencing and contract design. Real-time forces early product commitments: channel naming and authorization, authentication on connect, reconnect behavior, delivery expectations. Committing to those now is valuable even if the underlying package is later swapped out.
- Use-case fit within the portfolio. Strongest for internal/admin tooling — especially Orchid-based admin panels — on-prem or regulated deployments where SaaS WebSockets are disallowed, and small-to-mid-scale SaaS that needs notifications rather than high-frequency collaboration.
- Dependency ownership. Zero dependents, no visible stars, maturity score 0. Adoption equals ownership, not procurement. The moderate opportunity score reflects a real need with weak ecosystem validation — a signal to prototype, not to commit.
When to Consider This Package
Consider it when:
- You are already in the Orchid/tabuna ecosystem and want an async server that fits that admin stack rather than bolting on a separate service.
- Real-time is needed but the org will not add Node, and a managed vendor is blocked by cost, procurement, or data-residency rules.
- Workloads are bounded and modest — notifications, presence, admin alerts, live job/deploy status — not high-frequency collaborative editing or financial streaming.
- The team can operate event-loop daemons: process supervision, TLS termination and WSS through a reverse proxy, Redis pub/sub, memory hygiene over long uptimes.
- You are willing to pin a version and commit hash, read the source as the documentation, add integration tests, and maintain a fork if needed — and to wrap it behind an internal broadcast interface so it can be replaced.
- You need a time-boxed spike to measure latency and operational cost before signing a vendor contract.
Look elsewhere when:
- You need support contracts, documented upgrade paths, security patch cadence, or community answers. Zero dependents means no safety net.
- You expect horizontal scale or multi-region — tens of thousands of concurrent connections, sticky sessions, backplane design. Use Reverb, Soketi, Centrifugo, or a managed service.
- The team has no appetite for operating async PHP processes; total cost of ownership will exceed a managed vendor's bill.
- Laravel Reverb (first-party, Echo-compatible, framework compatibility guarantees) or Soketi already satisfies the requirement with better maintenance signals. Choosing a zero-adoption third-party alternative over Reverb needs a documented, defensible reason.
- You only need occasional server-to-client updates; SSE or improved polling is simpler and cheaper.
- You require compliance attestations, SLAs, or vendor audits that a single-maintainer package cannot provide.
How to Pitch It (Stakeholders)
For executives: Live updates are a candidate roadmap investment — they improve engagement and reduce polling cost — and this package is one self-hosted, PHP-only way to deliver them. It is unproven: no dependents, no visible community, maturity score 0. The recommendation is a one-to-two sprint proof of concept with explicit go/no-go criteria, not a commitment. Compare its fully loaded cost — engineering ownership, on-call, upgrades, incident risk — against a managed service and against Laravel's first-party Reverb. Strategic upside is stack simplicity and no per-connection SaaS fees; strategic risk is inheriting an unmaintained dependency with write access to our real-time layer. The exit path is defined up front: all publishing stays behind Laravel's broadcasting abstraction and the frontend talks only to Echo with a configurable host, so switching to Reverb, Soketi, or a vendor is a config change plus a deploy.
For engineering: A Laravel library for asynchronously serving WebSockets in PHP — event-loop based, wired into Laravel's broadcasting model, no Node required. Treat it as new infrastructure, not a composer require: a long-running supervised daemon with its own port, connection state, and lifecycle, plus Redis as backplane, connection auth, reconnect and backpressure semantics, and memory growth under sustained uptime. Because adoption is effectively zero, the source is the documentation — verify which Laravel/PHP versions are actually supported, whether it speaks the Pusher protocol faithfully enough for stock laravel-echo + pusher-js, and how private/presence channel authorization calls back into the app. Spike it behind an internal interface, load-test to the 12-month peak rather than today's traffic, and confirm graceful restart and TLS/WSS termination end-to-end through the proxy. Success criteria: sustained target connections within memory and latency budget, a clean deploy/restart story with client backoff, and a documented fallback. If those fail, we default to Reverb or a managed provider — and the abstraction keeps that decision cheap.