relay-cloud-laravel maintained by darknautica
Relay Cloud for Laravel
Zero-config WebSocket broadcasting for Laravel, powered by Relay Cloud.
Installation
composer require darknautica/relay-cloud-laravel
Add your credentials to .env:
RELAY_APP_KEY=your-app-key
RELAY_APP_SECRET=your-app-secret
That's it. Broadcasting works. No manual editing of config/broadcasting.php required.
Find your credentials at relaycloud.dev under your project's settings.
Usage
Verify your setup
php artisan relay:install
This prints your connection details and the Laravel Echo JavaScript snippet you need for your frontend.
Laravel Echo setup
Add this to resources/js/bootstrap.js:
import Echo from 'laravel-echo';
import Pusher from 'pusher-js';
window.Pusher = Pusher;
window.Echo = new Echo({
broadcaster: 'pusher',
key: import.meta.env.VITE_RELAY_APP_KEY,
wsHost: 'ws.relaycloud.dev',
wsPort: 443,
wssPort: 443,
forceTLS: true,
disableStats: true,
enabledTransports: ['ws', 'wss'],
});
Add to your .env:
VITE_RELAY_APP_KEY="${RELAY_APP_KEY}"
Broadcasting events
Use Laravel broadcasting as normal. All standard features work out of the box:
broadcast(new OrderShipped($order));
Self-hosted Relay
To point at your own Relay server instead of Relay Cloud, set these additional environment variables:
RELAY_HOST=your-relay-host.example.com
RELAY_PORT=6001
RELAY_SCHEME=https
For local development without SSL:
RELAY_HOST=127.0.0.1
RELAY_PORT=6001
RELAY_SCHEME=http
Publishing the config
If you need to customize the configuration beyond environment variables:
php artisan vendor:publish --tag=relay-config
This publishes config/relay.php to your application's config directory.
Local Development
To test the package in a local Laravel app before publishing to Packagist:
- In your Laravel app's
composer.json, add:
"repositories": [
{
"type": "path",
"url": "../relay-cloud-laravel"
}
]
- Then require the package:
composer require darknautica/relay-cloud-laravel:@dev
Requirements
- PHP 8.1+
- Laravel 10, 11, or 12
License
MIT. See LICENSE for details.