larahook/simple-centrifugo
Connection and subscription tokens for centrifugo
Install
composer require larahook/simple-centrifugo
Driver
Add centrifugo connection with simple-centrifugo driver to config/broadcasting.php
'connections' => [
'centrifugo' => [
'driver' => 'simple-centrifugo',
'token_hmac_secret_key' => env('CENTRIFUGO_TOKEN_HMAC_SECRET_KEY', ''),
'api_key' => env('CENTRIFUGO_API_KEY', ''),
'url' => env('CENTRIFUGO_URL', 'http://localhost:8000'), // centrifugo api url
'verify' => env('CENTRIFUGO_VERIFY', false), // Verify host ssl if centrifugo uses this
'ssl_key' => env('CENTRIFUGO_SSL_KEY', null), // Self-Signed SSl Key for Host (require verify=true)
],
]
Usage
Get tokens for client
- Add
SimpleCentrifugotrait to your class - Use method
getConnectionTokenfor get connection token - And use method
getSubscriptionTokenfor get subscription tokens
use Carbon\Carbon;
use Larahook\SimpleCentrifugo\Trait\SimpleCentrifugo;
class ChannelService
{
use SimpleCentrifugo;
/**
* @param int $userId
* @param Carbon $exp
*
* @return array
*/
public function getConnToken(int $userId, Carbon $exp): array
{
return $this->getConnectionToken($userId, $exp);
}
/**
* @param int $userId
* @param array $channels
* @param Carbon $exp
*
* @return array
*/
public function getSubsToken(int $userId, array $channels, Carbon $exp): array
{
return $this->getSubscriptionToken($userId, $channels, $exp);
}
}
Event example
Push message to centrifugo channel via laravel events
namespace App\Events;
use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Auth;
class PersonalEvent implements ShouldBroadcastNow
{
use Dispatchable;
use SerializesModels;
/**
* @param array $message
*/
public function __construct(public array $message) {}
/**
* Get the channels the event should broadcast on.
*
* @return array
*/
public function broadcastOn()
{
return ['personal:#'.Auth::id()];
}
public function broadcastAs()
{
return 'PersonalEvent';
}
}
Event execute
PersonalEvent::dispatch(['info']);
Related Packages
laravel-notification-channels/authy
Authy notification channel for Laravel, with the ability to send in-app, sms, an...
46,701
57
skoniks/php_cent
Centrifugo (Centrifuge) [1.6+] PHP Server REDIS & HTTP API implementation for La...
4,759
7
rinvex/laravel-authy
Rinvex Authy is a simple wrapper for Authy TOTP, the best rated Two-Factor Authe...
78,132
32