springboardvr / laravel-ably-broadcaster
An Ably broadcaster for Laravel
Installs: 12 792
Dependents: 0
Suggesters: 0
Security: 0
Stars: 41
Watchers: 8
Forks: 7
Open Issues: 0
Requires
- php: ^5.6 || ^7.0
- ext-json: *
- ably/ably-php: ^1.1
- illuminate/support: 5.7.* || 5.8.* || ^6.0 || ^7.0 || ^8.0
Requires (Dev)
- orchestra/testbench: 3.8.*
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2023-04-15 18:31:52 UTC
README
Adding support for the Ably broadcaster to Laravel! This uses the native Ably PHP SDK and adds a custom Laravel Broadcast Driver.
Installation
You can install the package via composer:
composer require springboardvr/laravel-ably-broadcaster
Configuration
Currently to use Ably with Laravel Echo in the frontend you need to enable the Pusher Protocol Support inside of your Abbly account.
- Go to Settings for your Application
- Enable Pusher protocol support under Protocol Adapter Settings
Once you've got that setup you can continue to configuring your Laravel application.
Change your default Broadcast driver name in config/broadcasting.php
'default' => env('BROADCAST_DRIVER', 'ably'),
Then you need to add Ably to your config/broadcasting.php
config file under connections
.
'ably' => [ 'driver' => 'ably', 'key' => env('ABLY_KEY'), ],
Then you need to update your .env
file with your Ably configuration details. The Key is available in the API Keys section of Ably. You need a key with full Privileges.
The ABLY_KEY
value will look something like g7CSSj.E08Odw:t2w2LkZ7OcR2Xk7S
For the MIX_ABLY_KEY
value you need to take everything before the :
in your ABLY_KEY
, like g7CSSj.E08Odw
BROADCAST_DRIVER=ably ABLY_KEY= MIX_ABLY_KEY=
Once you've got the Laravel side setup you also need to update Laravel Echo to use Ably! It keeps using the Pusher JS library but you use the Websocket Host that Ably provides.
import Echo from "laravel-echo" window.Pusher = require('pusher-js'); window.Echo = new Echo({ broadcaster: 'pusher', key: process.env.MIX_ABLY_KEY, wsHost: 'realtime-pusher.ably.io', wsPort: 443, disableStats: true, encrypted: true, });
That's it! Public, Private, and Presence channels will all work as with Pusher.
Testing
composer test
Limitations
- Currently in the frontend it is using the PusherJS library rather then the Ably library. We will be evaluating adding support for this library to Laravel Echo in the future.
- When you are broadcasting to multiple channels we aren't yet using the Bulk Publish endpoints. Once these are moved out of Beta we will update the library to support them.
- Limited testing! Needs to be expanded to cover the Auth functions.
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email matthew@springboardvr.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.