tariqbilal's avatar

Issue: Horizon Dashboard Not Updating in Real-Time - Requires Hard Reload


Description

The Horizon dashboard is functioning but does not update in real-time. When jobs are processed or new jobs arrive, the dashboard does not reflect changes automatically. I have to perform a hard reload (Ctrl+Shift+R / Cmd+Shift+R) to see updated job counts, completed jobs, and current workload. The dashboard remains "Active" but static until manually refreshed.

Environment

  • Laravel Version: 12.x
  • Horizon Version: 5.x
  • PHP Version: 8.4.18
  • Redis Version: 7.0.15
  • Database: MySQL 8.0
  • Queue Driver: Redis
  • Broadcast Driver: Reverb
  • Server: Ubuntu 22.04 / 24.04

Current Configuration

Supervisor Status

horizon                          RUNNING   pid X, uptime X

Horizon Dashboard Shows

  • Status: Active
  • Jobs in queues: visible but don't auto-refresh
  • Need hard reload to see new jobs or job completion

What I've Tried

  • ✅ Restarted Horizon multiple times
  • ✅ Cleared config cache (php artisan config:clear, php artisan config:cache)
  • ✅ Restarted supervisor (sudo supervisorctl restart horizon)
  • ✅ Checked Redis connection (Redis responds to ping)
  • ✅ Verified jobs are in Redis queues
  • ✅ Increased memory limits in config/horizon.php (master: 2048MB, workers: 256MB)
  • ✅ Checked logs - no errors in Horizon, Laravel, or Supervisor logs

Expected Behavior

The Horizon dashboard should update in real-time via WebSocket connections (using Pusher/Reverb) without requiring manual page refreshes. New jobs should appear, job counts should update, and completed jobs should move to appropriate sections automatically.

Actual Behavior

  • Dashboard remains static
  • No auto-refresh occurs
  • Only updates after manual hard reload
  • Real-time updates via WebSocket seem disconnected

Questions

  1. Is this a WebSocket connection issue between the dashboard and the broadcasting server?
  2. Could this be related to the Horizon JavaScript assets not loading correctly?
  3. Are there specific Horizon configuration settings that control dashboard auto-refresh behavior?
  4. Does Horizon rely on Laravel Echo for real-time updates? Could this be misconfigured?

Additional Context

  • The application itself broadcasts events correctly (tested with other clients)
  • Jobs are being queued and processed (verified by checking Redis and database)
  • The issue is isolated to the Horizon dashboard's real-time updates only
  • Other parts of the application that use broadcasting work fine

Relevant Configuration Snippets

.env

BROADCAST_DRIVER=reverb
REVERB_APP_ID=cs-market-local
REVERB_APP_KEY=cs-market-local-key
REVERB_APP_SECRET=********
REVERB_HOST=0.0.0.0
REVERB_PORT=8080
REVERB_SCHEME=http

config/horizon.php (relevant parts)

'memory_limit' => 2048,
'environments' => [
    'production' => [
        'supervisor-1' => [
            'connection' => 'redis',
            'queue' => ['default'],
            'balance' => 'auto',
            'processes' => 1,
            'memory' => 256,
        ],
        'supervisor-market' => [
            'connection' => 'redis',
            'queue' => ['market-stream'],
            'balance' => 'auto',
            'processes' => 1,
            'memory' => 256,
        ],
    ],
],

config/broadcasting.php

'default' => env('BROADCAST_DRIVER', 'reverb'),
'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', 'localhost'),
            'port' => env('REVERB_PORT', 8080),
            'scheme' => env('REVERB_SCHEME', 'http'),
        ],
    ],
],

Any help or guidance would be greatly appreciated! 🙏

0 likes
0 replies

Please or to participate in this conversation.