bugover/laravel-websocket
Fork of beyondcode/laravel-websockets bringing WebSockets to Laravel as a drop-in Pusher replacement. Supports SSL, Laravel Echo, and a debug dashboard, plus added connection events and two-way client-to-server messaging.
apps configuration in websockets.php allows isolation of different WebSocket instances for microservices or multi-tenant apps.broadcasting.php and .env). Existing event publishing logic (event(new MyEvent())) remains unchanged.pusher/pusher-php-server, reactphp) with optional extensions (ev, redis) for scaling. No heavy frameworks or databases required for basic functionality.stream_select event loop caps connections at 1,024. Mitigation: Use ev or event PECL extensions for 60K+ connections (requires PHP tuning).ArrayChannelManager.queue:work) for reliability..local_cert, .local_pk) for production. Reverse proxy (Nginx) recommended for TLS termination.beyondcode/laravel-websockets. Monitor for breaking changes or security updates.ev/event extensions or Redis channel manager.ulimit -n) or PECL extensions?apps configuration and isolation.enable_statistics and configure database retention.fallback broadcasting driver or hybrid Pusher + self-hosted setup.ev, reactphp) or Redis tuning?ulimit, process management, and SSL setup?composer.json for exact ranges). Tested with PHP 7.4+.pusher driver in config/broadcasting.php with local host/port. No changes to event publishing logic.openssl, pcntl, pthreads (for multi-process scaling).ev/event PECL for high-concurrency setups (>1K connections).redis for channel management or pdo_mysql/pdo_pgsql for statistics.broadcaster: 'pusher'. Auto-detects local WebSocket server.ws://your-domain:6001).ws://your-domain:6001/apps/{app_id}.composer require bugover/laravel-websocket
php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="config"
php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="migrations"
php artisan migrate # Optional: For statistics
config/broadcasting.php:
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'host' => env('PUSHER_HOST', '127.0.0.1'),
'port' => env('PUSHER_PORT', 6001),
'scheme' => env('PUSHER_SCHEME', 'http'),
'encrypted' => true,
'useTLS' => env('PUSHER_SCHEME') === 'https',
],
],
.env:
PUSHER_APP_ID=your_app_id
PUSHER_APP_KEY=your_app_key
PUSHER_APP_SECRET=your_app_secret
PUSHER_HOST=127.0.0.1
PUSHER_PORT=6001
PUSHER_SCHEME=http
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
wsHost: window.location.hostname,
wsPort: 6001,
forceTLS: false,
disableStats: true,
});
const pusher = new Pusher('your_app_key', {
wsHost: 'your-domain',
wsPort: 6001,
forceTLS: false,
disabledStats: true,
});
php artisan websockets:serve
curl -N http://localhost:6001/apps/{app_id}/channels/private-test-channel
/laravel-websockets.pusher.com). Replace with local host/port.predis/predis is installed and REDIS_HOST is configured in websockets.php.php artisan websockets:serve alongside Laravel’s dev server./laravel-websockets to monitor connections/events.Mockery).How can I help you explore Laravel packages today?