laravel-websocket
When to use
Use when implementing real-time features — WebSockets, Broadcasting, or persistent connections.
Do NOT use when:
- REST API endpoints (use
api-designskill) - Reverb server setup/deployment (use
laravel-reverbskill)
Procedure: Create a broadcast event
Step 0: Inspect
- Check
config/broadcasting.phpfor driver (Reverb, Pusher, Ably). - Check existing broadcast events — match patterns.
- Check
routes/channels.phpfor channel authorization.
Step 1: Create event class
- Implement
ShouldBroadcast. - Define
broadcastOn()with appropriate channel type (public/private/presence). - Define
broadcastAs()for event name. - Define
broadcastWith()— small payload (IDs + changed fields only).
Step 2: Authorize channel
Add authorization in routes/channels.php for private/presence channels.
Step 3: Client setup
Use Laravel Echo to listen on the channel. Wire up reconnection with exponential backoff.
Conventions
→ See guideline php/websocket.md for broadcasting setup, channel types, connection management, Echo.
Validate
- Verify private/presence channels have authorization in
routes/channels.php. - Confirm event implements
ShouldBroadcast(orShouldBroadcastNow). - Check that no sensitive data is broadcast on public channels.
- Test client receives event — use browser console or Echo debug mode.
Output format
- Event class with broadcastOn() and channel definitions
- Client-side listener integration code
Gotcha
- Connections are stateful — don't assume they persist after page navigation.
- Always implement reconnection with exponential backoff.
- Don't broadcast sensitive data on public channels — use private/presence.
Do NOT
- Do NOT send entire model objects — select only needed fields.
- Do NOT skip channel authorization for user-specific data.
- Do NOT rely on WebSocket delivery — use acknowledgments for critical messages.
Auto-trigger keywords
- WebSocket
- real-time
- broadcasting
- Laravel Echo
- channel authorization
- ShouldBroadcast