본문으로 건너뛰기
cccskills
무료GitHub에 공개

laravel-reverb

Use when configuring Laravel Reverb — the first-party WebSocket server with Pusher protocol compatibility, horizontal scaling, and Pulse monitoring.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Redis
설치 방법 보기

포함된 파일(1)

  • SKILL.md6.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

laravel-reverb

When to use

Use this skill for anything specific to Laravel Reverb as the WebSocket server:

  • Reverb installation, configuration, and environment setup
  • Reverb server deployment and scaling
  • Reverb-specific debugging and monitoring
  • Pusher protocol compatibility questions

For general WebSocket patterns, broadcasting events, channel authorization, and Laravel Echo client setup, see the laravel-websocket skill.

Procedure: Set up Reverb

  1. Inspect current broadcasting — Check config/broadcasting.php, .env, and composer.json for Pusher / Reverb / Soketi presence and current driver.
  2. Install — php artisan install:broadcasting or manual setup (see below).
  3. Configure — Set environment variables for Reverb host, port, app credentials.
  4. Start server — php artisan reverb:start.
  5. Connect client — Configure Laravel Echo with Reverb credentials.
  6. Verify — Confirm WebSocket connection in browser console, test event delivery.

Laravel Reverb is Laravel's first-party, blazing-fast WebSocket server. It uses the Pusher protocol, making it compatible with Laravel Echo and any Pusher-compatible client. A single Reverb server can handle thousands of concurrent connections.

Installation

php artisan install:broadcasting

This scaffolds:

  • config/broadcasting.php with Reverb driver
  • config/reverb.php with server settings
  • routes/channels.php for channel authorization
  • .env variables for Reverb

Configuration

Environment variables

REVERB_APP_ID=455493
REVERB_APP_KEY=your-app-key
REVERB_APP_SECRET=your-app-secret
REVERB_HOST="localhost"
REVERB_PORT=8080
REVERB_SCHEME=http

# Client-side (Vite)
VITE_REVERB_APP_KEY="${REVERB_APP_KEY}"
VITE_REVERB_HOST="${REVERB_HOST}"
VITE_REVERB_PORT="${REVERB_PORT}"
VITE_REVERB_SCHEME="${REVERB_SCHEME}"

config/reverb.php

Note: REVERB_HOST / REVERB_PORT are for client connections (hostname/port the client connects to). REVERB_SERVER_HOST / REVERB_SERVER_PORT are for the server binding (interface/port the server listens on).

'servers' => [
    'reverb' => [
        'host' => env('REVERB_SERVER_HOST', '0.0.0.0'),
        'port' => env('REVERB_SERVER_PORT', 8080),
        'hostname' => env('REVERB_HOST'),
        'options' => [
            'tls' => [],
        ],
        'max_request_size' => 10_000,  // bytes
        'scaling' => [
            'enabled' => env('REVERB_SCALING_ENABLED', false),
            'channel' => env('REVERB_SCALING_CHANNEL', 'reverb'),
        ],
        'pulse_ingest_interval' => 15,
    ],
],

config/broadcasting.php

'connections' => [
    'reverb' => [
        'driver' => 'reverb',
        'key' => env('REVERB_APP_KEY'),
        'secret' => env('REVERB_APP_SECRET'),
        'app_id' => env('REVERB_APP_ID'),
        'options' => [
            'host' => env('REVERB_HOST'),
            'port' => env('REVERB_PORT', 443),
            'scheme' => env('REVERB_SCHEME', 'https'),
            'useTLS' => env('REVERB_SCHEME', 'https') === 'https',
        ],
    ],
],

Running the server

# Start Reverb (foreground)
php artisan reverb:start

# Start with verbose output (debugging)
php artisan reverb:start --debug

# Production — use Supervisor or systemd
# Reverb is a long-running process, it must be managed by a process monitor

Supervisor config (production)

[program:reverb]
command=php /path/to/artisan reverb:start
autostart=true
autorestart=true
user=www-data
redirect_stderr=true
stdout_logfile=/var/log/reverb.log
stopwaitsecs=3600

Horizontal scaling

Enable Redis-based scaling to run multiple Reverb instances behind a load balancer:

REVERB_SCALING_ENABLED=true
REVERB_SCALING_CHANNEL=reverb

Requires a shared Redis instance accessible by all Reverb servers. Connections and channel subscriptions are synced across servers via Redis pub/sub.

Monitoring with Pulse

Reverb has built-in Laravel Pulse integration. Add the Reverb Pulse cards:

// In your Pulse dashboard
<livewire:reverb.connections />
<livewire:reverb.messages />

SSL/TLS in production

Reverb itself does not handle TLS. Use a reverse proxy (Nginx, Traefik, Caddy) to terminate SSL and proxy WebSocket connections to Reverb:

location /app {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_read_timeout 60s;
    proxy_send_timeout 60s;
}

Core rules

  • Reverb is a long-running process — always use Supervisor/systemd in production.
  • TLS via reverse proxy — Reverb doesn't handle SSL directly.
  • Scale with Redis — enable REVERB_SCALING_ENABLED for multi-server setups.
  • Monitor with Pulse — use the built-in Pulse cards for connection/message metrics.
  • Pusher protocol — any Pusher-compatible client works (Laravel Echo, pusher-js, etc.).
  • Max request size — default 10KB, increase for large payloads if needed.

Output format

  1. Reverb configuration with server and scaling settings
  2. Broadcasting channel definitions and client integration

Auto-trigger keywords

  • Reverb
  • reverb:start
  • WebSocket server
  • Reverb scaling
  • Reverb deployment
  • Reverb configuration

Gotcha

  • Reverb requires a persistent process — it's not compatible with serverless deployments.
  • The model forgets to configure the REVERB_HOST and REVERB_PORT environment variables.
  • WebSocket connections bypass middleware — don't rely on session auth for channel authorization.

Do NOT

  • Do NOT expose Reverb directly to the internet without a reverse proxy for TLS.
  • Do NOT run reverb:start without a process monitor in production.
  • Do NOT confuse Reverb config with Pusher SaaS — Reverb is self-hosted.
  • Do NOT skip Redis when running multiple Reverb instances.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Use when reviewing UI for accessibility — WCAG 2.2 AA, keyboard nav, focus, ARIA, contrast, screen-reader semantics — even on 'is this a11y-OK?' or 'mach das barrierefrei'.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

event4u-app/agent-config132026년 10월 23일 업데이트

Use when defining or auditing the activation event — aha-moment selection, retention correlation, falsifiable definition. Triggers on 'what is our aha moment', 'redefine activation'.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

event4u-app/agent-config132026년 10월 23일 업데이트

Use when capturing an architectural decision — file naming, next ADR number, Status / Context / Decision / Consequences, index regen; fires even without saying 'ADR'.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

event4u-app/agent-config132026년 10월 23일 업데이트

Adversarial critique — devil's advocate, stress-test, honest teardown ('poke holes', 'be brutal', 'was hältst du davon'); explicit request only. Routine code or design review → code-review.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

event4u-app/agent-config132026년 10월 23일 업데이트

Use when reading, creating, or updating agent documentation, module docs, roadmaps, or AGENTS.md. Understands the full .augment/, agents/, and copilot-instructions structure.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

event4u-app/agent-config132026년 10월 23일 업데이트

Use for an adversarial red-team / blue-team / auditor review of an AI agent's CONFIG + behaviour (rules, skills, MCP, hooks, permissions) — attack-chain → defensive-gap list, not a code audit.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

event4u-app/agent-config132026년 10월 23일 업데이트

event4u-app의 스킬 모두 보기

이 스킬의 문제 신고