- What is sinemacula/laravel-sse used for?
- It provides Server-Sent Events streaming primitives for Laravel: a heartbeat-driven event-stream response and a typed emitter. Developers use it for one-way server-push features such as live notifications, progress updates, and job-status streaming. It is not a full pub/sub system or a WebSocket replacement.
- How do I install sinemacula/laravel-sse in a Laravel app?
- Install it with composer require sinemacula/laravel-sse. Laravel package auto-discovery and route/controller registration are described as low-friction; create a route that returns the package's SSE response and use the typed emitter to send events. Check the README for any publishable config and exact API before wiring it into production routes.
- Which Laravel versions does sinemacula/laravel-sse support?
- The v1.1.0 release is described as adding Laravel 13 support as a feature-only minor with no breaking changes or deprecations flagged. The assessment still recommends auditing the illuminate/* constraint with composer why-not or a dry-run against your lockfile. Pin the package explicitly so a later minor cannot silently change which Laravel majors resolve.
- Does sinemacula/laravel-sse work with Laravel Octane or php-fpm?
- SSE holds a PHP process open for the duration of each stream, so under php-fpm the concurrency ceiling is set by pool size rather than by the package. Octane can materially change that math, but the assessment says to confirm whether the package assumes php-fpm, Octane, or a dedicated long-running worker. Isolate stream routes in their own pool or worker so they cannot starve normal request traffic.
- How do I disable buffering for Laravel SSE behind nginx or a CDN?
- Configure the edge, not just Laravel: disable proxy buffering on stream routes, for example with X-Accel-Buffering: no, and set read timeouts above the intended stream lifetime. Bypass CDN caching for those routes and test through the real ingress path such as nginx, ALB, or your CDN. Localhost testing will not reveal these buffering and timeout failures.
- Can sinemacula/laravel-sse broadcast events across multiple servers?
- Single-node use is the native fit because it adds no new datastore. Multi-node fan-out needs a shared pub/sub layer such as Redis, and the assessment flags that it is unconfirmed whether the package has a driver abstraction or reads in-process state. If it reads in-process state, each node only sees its own events and multi-node broadcasting breaks.
- How should I test a Laravel SSE endpoint before production?
- Build one pilot endpoint, such as background export progress, and exercise it through the real ingress path rather than localhost. Validate heartbeat handling, proxy behavior, and client-side reconnect/backoff before broad rollout. Tools like curl -N and browser EventSource are useful, but the key test is the production-like edge configuration.
- What are the production risks of SSE in Laravel?
- The main risks are runtime rather than API surface: each stream occupies a PHP worker, output buffering can interfere, proxy read timeouts can cut streams, and stream leakage is possible if client disconnects are not detected. The assessment also notes no built-in reconnect semantics, so client backoff is your responsibility. Apply authorization and per-connection rate limiting to stream endpoints yourself, and isolate stream traffic from normal workers.
- How does sinemacula/laravel-sse compare to WebSockets or Laravel Reverb?
- SSE is a one-way server-push channel over ordinary HTTP, which fits progress feeds and notifications without new infrastructure. WebSockets or Laravel Reverb are better when you need bidirectional communication or a different fan-out model. Choose SSE where WebSockets would be over-engineering, and choose WebSockets when you need the return channel.
- Is sinemacula/laravel-sse maintained and safe for long-term use?
- It is a small-surface, single-maintainer open-source project, so bus factor is a genuine consideration and there is no vendor SLA. Wrap it behind one internal interface so it is replaceable, and expect Laravel major upgrades to be gated on its support; v1.1.0 is the kind of release that unblocks a Laravel 13 timeline. Pin versions and audit constraints before relying on it long term.