denis660 / laravel-centrifugo
Centrifugo broadcaster for laravel
Installs: 115 296
Dependents: 0
Suggesters: 0
Security: 0
Stars: 94
Watchers: 2
Forks: 24
Open Issues: 1
Requires
- php: ^8.0
- ext-json: *
- guzzlehttp/guzzle: ~6.0|^7.0
- laravel/framework: ^9.0|^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^7.35|^8.14|^9.0|^10.0
- phpunit/phpunit: ^9.3|^10.5|^11.5.3
README
Documentation EN | RU
Laravel + Centrifugo
Centrifugo broadcast driver for Laravel 9 - 12
Introduction
Centrifugo broadcaster for Laravel is based on:
Features
- Compatibility with the latest version of Centrifugo v6.2.3 🚀
- Wrapper for Centrifugo HTTP API 🔌
- JWT token authentication (HMAC algorithm) for anonymous, authorized users, and private channels 🗝️
Requirements
- PHP 8.0 - 8.4
- Laravel 9 - 12
- Guzzlehttp/Guzzle 6 - 7
- Centrifugo Server v6 or newer (see here)
Installation
For Laravel 9-10:
composer require denis660/laravel-centrifugo
For Laravel 11-12, there are specific instructions below.
Select the version you need
Version | PHP | Laravel | Centrifugo | Notes |
---|---|---|---|---|
5.* |
>= 8.0 |
9 - 12 |
5-6 |
Current version |
3.0.* |
>= 7.4 |
8.75.* - 10 |
4 -5 |
Previous version |
By default, broadcasting is disabled in new Laravel 11 applications. You can enable broadcasting using the install Artisan command:
php artisan install:broadcasting
If asked whether to install Reverb, answer “no.”
Then, install the package for working with Centrifugo via composer by running the following command:
composer require denis660/laravel-centrifugo
Configuration
Run the centrifuge:install
command, which will publish the configuration file and generate the necessary environment variables in your .env
file with default values.
php artisan centrifuge:install
Credentials
To establish a connection with Centrifugo, you need to provide credentials from your Centrifugo server's config.json
file. Laravel will generate example keys that you should replace with your actual server credentials. You can specify these credentials with the following environment variables:
Required parameters:
CENTRIFUGO_TOKEN_HMAC_SECRET_KEY=token_hmac_secret_key-from-centrifugo-config
CENTRIFUGO_API_KEY=api_key-from-centrifugo-config
Optional parameters, modify if needed:
CENTRIFUGO_URL=http://localhost:8000
CENTRIFUGO_SSL_KEY=/etc/ssl/some.pem
CENTRIFUGO_VERIFY=false
Make sure to check the BROADCAST_DRIVER
parameter in the .env file:
BROADCAST_DRIVER=centrifugo
Client SDKs
For working with clients, see the Client SDK API
Here is a list of SDKs supported by Centrifugal Labs:
- JavaScript — for browser, NodeJS, and React Native
- Golang — for Go language
- Dart — for Dart and Flutter (mobile and web applications)
- Swift — for native iOS development
- Java — for native Android and general Java development
- Python — real-time SDK for Python on top of asyncio
Basic Usage
Set up your Centrifugo server as detailed in the official documentation For sending events, refer to the official Laravel documentation
Here is a simple example of client usage:
<?php declare(strict_types = 1); namespace App\Http\Controllers; use denis660\Centrifugo\Centrifugo; use Illuminate\Support\Facades\Auth; class ExampleController { public function example(Centrifugo $centrifugo) { // Send a message to the news channel $centrifugo->publish('news', ['message' => 'Hello world']); // Generate a connection token $token = $centrifugo->generateConnectionToken((string)Auth::id(), 0, [ 'name' => Auth::user()->name, ]); // Generate a token for a private channel connection $apiSign = $centrifugo->generatePrivateChannelToken((string)Auth::id(), 'channel', time() + 5 * 60, [ 'name' => Auth::user()->name, ]); // Get a list of active channels $centrifugo->channels(); // Get information about the news channel and its active clients $centrifugo->presence('news'); } }
Methods for generating client tokens
Method | Description |
---|---|
generateConnectionToken |
Generate a token for connection |
generatePrivateChannelToken |
Generate a private token for a private channel |
API Methods
Method | Description |
---|---|
publish |
Send a message to a channel |
broadcast |
Send a message to multiple channels. |
presence |
Get presence information for a channel (all clients currently subscribed to this channel). |
presenceStats |
Get summary information for a channel (number of clients). |
history |
Get channel history (list of recent messages sent to the channel). |
historyRemove |
Remove channel history. |
subscribe |
Subscribe a user to a channel |
unsubscribe |
Unsubscribe a user from a channel. |
disconnect |
Disconnect a user by their ID. |
channels |
List current active channels. |
info |
Statistical information about running server nodes. |
License
MIT License. Please read the License File for more information.
Support the Project
USDT wallet: TUYJrA9VRtXhDFooESHyT8dQSyg5zmtUg7
Network: TRC20