supportpal / pollcast
Laravel broadcasting driver suitable for restricted hosting environments.
Installs: 12 461
Dependents: 0
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 1
Open Issues: 0
Requires
- php: ^8.1
- ext-json: *
- illuminate/broadcasting: ^10.0|^11.0
- illuminate/database: ^10.0|^11.0
- illuminate/http: ^10.0|^11.0
- illuminate/session: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- graham-campbell/testbench: ^6.0
- nunomaduro/larastan: 2.9.8
- phpstan/phpstan-mockery: 1.1.2
- phpunit/phpunit: ^11.4
- rregeer/phpunit-coverage-check: ^0.3.1
- supportpal/coding-standard: 0.4.4
README
Pollcast. A Laravel broadcast driver using short polling.
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) }} });