supportpal/pollcast

Laravel broadcasting driver suitable for restricted hosting environments.

v1.2.3 2024-03-11 14:46 UTC

README

68747470733a2f2f7777772e737570706f727470616c2e636f6d2f6173736574732f696d672f6c6f676f5f626c75655f736d616c6c2e706e67
Pollcast. A Laravel broadcast driver using short polling.

Build Status 68747470733a2f2f636f6465636f762e696f2f67682f737570706f727470616c2f706f6c6c636173742f6272616e63682f6d61737465722f67726170682f62616467652e7376673f746f6b656e3d5235365a355433534253 Total Downloads Latest Stable Version License

Pollcast

"Pollcast" is short for XHR polling using Laravel Broadcasting.

Motivation

Laravel supports several broadcast drivers, but all of these either require integration with a third party service such as Pusher, or installation of additional software. The motivation behind this package is to provide a broadcast driver which works in all environments without additional configuration and is compatible with Laravel Echo.

In most cases, where you have control over the environment, you'll want to use web sockets.

Installation

Require this package with composer:

composer require supportpal/pollcast

Add the ServiceProvider class to the providers array in config/app.php. In Laravel versions 5.5 and beyond, this step can be skipped if package auto-discovery is enabled.

\SupportPal\Pollcast\ServiceProvider::class,

Change the default broadcast driver to in your .env file:

BROADCAST_DRIVER=pollcast

Add the database tables:

php artisan migrate --path=vendor/supportpal/pollcast/database/migrations

Finally, publish the config file config/pollcast.php if required:

php artisan vendor:publish --provider="SupportPal\Pollcast\ServiceProvider"

Usage

Require the pollcast-js package:

npm i --save pollcast-js laravel-echo

Create a fresh Laravel Echo instance and provide the PollcastConnector as the broadcaster:

import Echo from 'laravel-echo';
import PollcastConnector from 'pollcast-js'

window.Echo = new Echo({
  broadcaster: PollcastConnector,
  csrfToken: "{{ csrf_token() }}",
  routes: {
    connect: "{{ route('supportpal.pollcast.connect') }}",
    receive: "{{ route('supportpal.pollcast.receive') }}",
    publish: "{{ route('supportpal.pollcast.publish') }}",
    subscribe: "{{ route('supportpal.pollcast.subscribe') }}",
    unsubscribe: "{{ route('supportpal.pollcast.unsubscribe') }}"
  },
    polling: {{ Config.get('pollcast.polling_interval', 5000) }}
});