Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

ehabafia's avatar

Reverb use to work on Forge but not anymore.

Hello everyone, I hope everyone is good and having fun with our lovely Laravel.

I have a reverb chatting component, running on /chat once you click on the user you want to chat with and he is online then we can chat together.

For some reason it was working fine, after a while, I noticed that the chatting is not working anymore.

the domain of reverb is ws.staging.echolive.io and it is ssl and I was able to ping it and everything is normal except that it's not working.

The issue is that it's showing me in the browser that the socket status is 101, but still doesn't work, I even tried to run it as a public channel and still doesn't work.

The thing is, it's working perfectly fine in my local dev till now. I am running Laravel Herd in my local and the chat is just working perfectly, as it was working perfectly in my staging site as well but not anymore.

Anythoughts?

Thank you so much for your effort and support.

0 likes
1 reply
LaryAI's avatar

Certainly! Here’s a checklist and some troubleshooting steps for your Laravel Reverb setup on Forge, based on your description:


1. Check Reverb Server is Running

Log into your Forge server and ensure the Reverb server process is running. If you’re using Supervisor, check its status:

sudo supervisorctl status

If it’s not running, start or restart it:

sudo supervisorctl restart all

Or, if you’re using php artisan reverb:start, make sure it’s running in the background (use screen or tmux).


2. Check Reverb Configuration

Double-check your .env and config/broadcasting.php settings. For SSL, your .env should have:

BROADCAST_DRIVER=reverb
REVERB_HOST=ws.staging.echolive.io
REVERB_PORT=443
REVERB_SCHEME=https

And in config/reverb.php:

'host' => env('REVERB_HOST', '127.0.0.1'),
'port' => env('REVERB_PORT', 443),
'scheme' => env('REVERB_SCHEME', 'https'),

3. Check WebSocket Proxy (Nginx/Apache)

If you’re using a custom domain (ws.staging.echolive.io), make sure your Nginx config is proxying WebSocket traffic correctly. Example Nginx block:

location / {
    proxy_pass http://127.0.0.1:8080; # or your Reverb port
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;
    proxy_read_timeout 60;
}

4. Check SSL Certificates

Since you’re using SSL, ensure your certificates on ws.staging.echolive.io are valid and not expired. You can check with:

sudo certbot certificates

Or use an online SSL checker.


5. Check Firewall/Security Groups

Ensure the port (443 or your custom port) is open in your server’s firewall and any cloud provider security groups.


6. Browser Console & Network Tab

Open your browser’s dev tools, check the console and network tab for errors. Look for:

  • CORS errors
  • Mixed content errors (HTTP/HTTPS mismatch)
  • Authentication errors

7. Check Laravel Logs

Check storage/logs/laravel.log for any broadcasting or Reverb-related errors.


8. Clear Cache

Sometimes config or route cache can cause issues after changes:

php artisan config:clear
php artisan cache:clear
php artisan route:clear

9. Client-Side Configuration

Make sure your JS client is connecting to the correct host/port/scheme:

import { Reverb } from 'laravel-reverb';

window.Echo = new Echo({
    broadcaster: 'reverb',
    key: null,
    wsHost: 'ws.staging.echolive.io',
    wsPort: 443,
    wssPort: 443,
    forceTLS: true,
    enabledTransports: ['ws', 'wss'],
});

10. Check for Updates

If you recently updated Laravel or Reverb, check for breaking changes in the docs or GitHub issues.


Summary:

  • Double-check server process, config, SSL, and proxy settings.
  • Check browser/network errors and Laravel logs.
  • Ensure client-side config matches your server.

If you provide any error messages from the browser console or Laravel logs, I can help you debug further!

Please or to participate in this conversation.