Skip to content
Documentation

Realtime

Soketi provides the local Pusher-compatible WebSocket service. It starts with Sail and is available at ws://localhost:6001. Client-originated events are disabled.

Laravel configuration

Laravel publishes through the Pusher PHP SDK. Inside Sail, use:

BROADCAST_CONNECTION=pusher
PUSHER_HOST=soketi
PUSHER_PORT=6001
PUSHER_SCHEME=http

PUSHER_APP_ID, PUSHER_APP_KEY, and PUSHER_APP_SECRET must match Soketi's configuration. Bootstrap generates local values when missing. The application key may be shared with clients; the secret must remain on the server.

Redis handles caches and queues. Publishing an arbitrary Redis message does not create a Soketi event.

Private channels

Channel authorization uses the department-bound token and the same room policies as the API. Channel names include the department's access version so membership and permission changes invalidate previous publishing audiences. Change events tell clients to re-fetch content through the authorized API.

Operations

bin/sail logs -f soketi
bin/sail restart soketi
bin/test-infrastructure

Check the publication response body as well as its HTTP status: this Soketi version can return HTTP 200 with an authentication error in the body.

The bundled Soketi 1.6.1 native binary requires Node 18, an end-of-life runtime. The Sail service is bound to loopback for local development; do not expose that image as a public production service.

Non-emergency communication only. Not for dispatch or emergency response.