iliakologrivov / centrifuge
centrifuge broadcaster for laravel
1.1
2020-09-20 17:57 UTC
Requires
- php: ^7.1.3
- firebase/php-jwt: ^5.0
- guzzlehttp/guzzle: ^6.3
- laravel/framework: ^5.4 || ^6.1 || ^7.2
This package is auto-updated.
Last update: 2024-09-21 02:47:04 UTC
README
简介
Centrifuge broadcaster for laravel >= 5.4
要求
- PHP 7.1.3+ 或更高版本
- Laravel 5.4 或更高版本
- Centrifugo Server 2.0 或更高版本(见此处)
安装
使用 composer 安装此包
composer require iliakologrivov/centrifuge
./artisan vendor:publish --provider='IliaKologrivov\Centrifuge\CentrifugeServiceProvider'
打开您的 web 路由并添加以下内容
IliaKologrivov\Centrifuge\CentrifugeRouterFacade::subscribe(); IliaKologrivov\Centrifuge\CentrifugeRouterFacade::refresh();
打开您的 config/broadcasting.php 并向其中添加以下内容
'connections' => [ 'centrifuge' => [ 'driver' => 'centrifuge', ], // ... ],
您也可以在 .env 文件中添加配置
CENTRIFUGE_SECRET=<very-long-secret-key>
CENTRIFUGE_API_KEY=<secret-key-for-centrifuge-api>
CENTRIFUGE_CONNECTION_URL='ws://:8000/connection/websocket
CENTRIFUGE_URL=https://:8000
CENTRIFUGE_VERIFY=false
CENTRIFUGE_SSL_KEY=/etc/ssl/some.pem
CENTRIFUGE_BROADCAST_ERROR=true
别忘了安装广播驱动
BROADCAST_DRIVER=centrifuge
基本用法
要配置 Centrifugo 服务器,请参阅官方文档
有关广播事件的详细信息,请参阅Laravel 的官方文档
一个简单的示例
<?php namespace App\Events; use Illuminate\Broadcasting\InteractsWithSockets; use IliaKologrivov\Centrifuge\Channels\Channel; use Illuminate\Contracts\Broadcasting\ShouldBroadcastNow; use Illuminate\Foundation\Events\Dispatchable; use Illuminate\Queue\SerializesModels; class event implements ShouldBroadcastNow { use Dispatchable, InteractsWithSockets, SerializesModels; public function broadcastAs() { return 'event-name'; } /** * Get the channels the event should broadcast on. * * @return \Centrifuge\Channels\Channel|array */ public function broadcastOn() { return new Channel('example-channel'); } }
在视图中使用 Blade 指令
@centrifugeConnectToken(<custom_user_token>)//get connect token for custom id user @centrifugeAuthConnectToken(86600)//get connect user for auth user @centrifugeWsConnectUrl()//get connect url for ws
示例视图
<script> const centrifugeUserToken = '@centrifugeAuthConnectToken(86600)'; const centrifugeConnectionUrl = '@centrifugeWsConnectUrl'; </script> <script src="{!! mix('/js/app.js') !!}"></script>
添加到 bootstrap.js 中
window.Centrifuge = require('centrifuge'); window.centrifuge = new Centrifuge(centrifugeConnectionUrl); centrifuge.setToken(centrifugeUserToken); centrifuge.connect(); centrifuge.on('connect', function(context) { console.log('connect', context); }).on('disconnect', function(context) { console.error('disconnect', context); centrifuge.disconnect(); }).on('error', function(error) { console.error(error); });
许可证
MIT 许可证(MIT)。有关更多信息,请参阅许可证文件