AnyCable is a language-agnostic server for web applications that brings performance and reliability to your real-time application features. AnyCable initially started in the Rails ecosystem, but the team behind the project has now developed a broadcast adapter for Laravel.
The Laravel broadcaster allows you to use AnyCable as a drop-in replacement for Reverb, Pusher, or any other service supported by Laravel Echo. This means that no client-side changes are required to use AnyCable; you only need to update the server configuration and launch the AnyCable server.
According to the AnyCable team:
Think of it as a friendly handshake from the Rails ecosystem, returning the love after Inertia.js made its way from Laravel to Rails. Let’s keep building bridges!
Main Features
- Reliability: With features like reliable streams and resumable sessions
- Scalability and Performance: It is written in Go, giving your Laravel app a high-performance WebSocket server that takes the load off your core PHP processes
- Open Source and Always Will Be: The core is free and open source; however, there is a commercial version with extra features if needed.
Now, the question that has been asked of the AnyCable team since the initial release is why someone would choose AnyCable over Reverb or Pusher, and their answer is simple:
"it is a battle-proofed real-time server that's been in production at scale for many years. It comes with an extensive feature set (reliability, various protocols support, observability tools, etc.), and it's free to use."
Installation
You can install the package via Composer:
composer require anycable/laravel-broadcaster
Next, configure the application to use the anycable broadcasting driver by adding the AnyCable service provider to the bootstrap/providers.php file:
<?php return [ App\Providers\AppServiceProvider::class, // ... AnyCable\Laravel\Providers\AnyCableBroadcastServiceProvider::class,];
Then, register the anycable driver in your config/broadcasting.php file:
'anycable' => [ 'driver' => 'anycable',],
Your client-side code remains the same as if you were setting up Reverb or Pusher.
Finally, start the anycable server:
php artisan anycable:server
Note: The command will automatically download the AnyCable binary (if necessary).
Note: this feature is in the preview phase at the time of writing, so it has a few limitations. However, the AnyCable team invites developers to test it and provide feedback.
The AnyCable team created a Demo Laravel application that demonstrates how to use AnyCable as a broadcasting and Echo backend.
Learn more about this package and view the source code on GitHub.