Skip to content
A Laravel Broadcast Driver for Ably.io
PHP
Branch: master
Clone or download

README.md

Ably Broadcaster for Laravel

Latest Version on Packagist Build Status Quality Score Total Downloads

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.

  1. Go to Settings for your Application
  2. 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.

You can’t perform that action at this time.