denis660 / laravel-centrifugo
laravel 8.75.0 - 11 和 Centrifugo >= 5.4.5 的 Centrifugo 广播器
3.1
2023-06-08 04:52 UTC
Requires
- php: ^7.4|^8.0
- guzzlehttp/guzzle: ~6.0|^7.0
- laravel/framework: ^8.75.0|^9.0|^10.0
Requires (Dev)
- orchestra/testbench: ^3.7|^8.0
- phpunit/phpunit: ^6||^7||^8|^9.5.10
README
文档 英文 | 俄文
Laravel + Centrifugo
Laravel 8.75.0 - 11 的 Centrifugo 广播驱动程序
简介
laravel 的 Centrifugo 广播器,基于
特性
- 兼容最新 Centrifugo v5.4.5 🚀
- 封装在 Centrifugo HTTP API 🔌
- 使用 JWT 令牌(HMAC 算法)进行身份验证,以匿名、认证用户和私有频道 🗝️
要求
- PHP >= 7.4 , 8.0, 8.1, 8.2, 8.3
- Laravel 8.75.0 - 11.0
- Guzzlehttp/Guzzle 6 - 7
- Centrifugo 服务器 v5.4.5 或更高版本(见此处)
安装
默认情况下,新 Laravel 11 应用程序中未启用广播。您可以使用 install:broadcasting Artisan 命令启用广播
php artisan install:broadcasting
install:broadcasting
命令将创建 config/broadcasting.php 配置文件。此外,命令还会创建 routes/channels.php 文件,您可以在其中注册应用程序的广播授权路由和回调。
使用 composer 需要此包
composer require denis660/laravel-centrifugo
php artisan centrifuge:install
应用程序凭证 为了建立与 Reverb 的连接,客户端和服务器之间必须交换一组 Reverb "应用程序" 凭证。这些凭证在服务器上配置,并用于验证客户端的请求。您可以使用以下环境变量定义这些凭证
您还应该在 .env 文件中添加以下两行
CENTRIFUGO_TOKEN_HMAC_SECRET_KEY=token_hmac_secret_key-from-centrifugo-config
CENTRIFUGO_API_KEY=api_key-from-centrifugo-config
CENTRIFUGO_URL=https://:8000
这些行是可选的
CENTRIFUGO_SSL_KEY=/etc/ssl/some.pem
CENTRIFUGO_VERIFY=false
别忘了更改 .env 文件中的 BROADCAST_DRIVER
设置!
BROADCAST_DRIVER=centrifugo
基本用法
要配置 Centrifugo 服务器,请参阅 官方文档
有关广播事件,请参阅 Laravel 的官方文档
简单的客户端使用示例
<?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 message into channel $centrifugo->publish('news', ['message' => 'Hello world']); // Generate connection token $token = $centrifugo->generateConnectionToken((string)Auth::id(), 0, [ 'name' => Auth::user()->name, ]); // Generate private channel token $apiSign = $centrifugo->generatePrivateChannelToken((string)Auth::id(), 'channel', time() + 5 * 60, [ 'name' => Auth::user()->name, ]); //Get a list of currently active channels. $centrifugo->channels(); //Get channel presence information (all clients currently subscribed on this channel). $centrifugo->presence('news'); } }
可用方法
许可
MIT 许可证(MIT)。有关更多信息,请参阅[许可文件](https://github.com/denis660/laravel-centrifugo/blob/master/LICENSE)。