Laravel 事件广播允许您轻松地将应用程序的事件广播到多个渠道,如 Redis、Pusher、Beanstalkd 等。以下是配置 Laravel 事件广播的步骤:
在您的 Laravel 项目中,首先需要安装 Laravel Echo 和相关依赖。在项目根目录下运行以下命令:
composer require pusher/php-server
npm install --save laravel-echo pusher-js
.env
文件在 Laravel 项目的根目录下,找到 .env
文件并编辑它。设置以下变量以配置事件广播:
BROADCAST_DRIVER=pusher
PUSHER_APP_ID=your_pusher_app_id
PUSHER_APP_KEY=your_pusher_app_key
PUSHER_APP_SECRET=your_pusher_app_secret
PUSHER_APP_CLUSTER=your_pusher_app_cluster
LARAVEL_WEBSOCKET_SSL_LOCAL_CERT=path/to/your/cert.pem
LARAVEL_WEBSOCKET_SSL_LOCAL_PK=path/to/your/key.pem
LARAVEL_WEBSOCKET_SSL_PASSPHRASE=your_pusher_ssl_passphrase
请确保将上述值替换为您自己的 Pusher 应用程序凭据和 SSL 证书路径。
config/app.php
文件在 config/app.php
文件中,找到 providers
数组并添加以下行:
App\Providers\BroadcastServiceProvider::class,
同时,找到 aliases
数组并添加以下行:
'Broadcast' => App\Providers\BroadcastServiceProvider::class,
'Echo' => Illuminate\Support\Facades\Echo::class,
在 app/Events
目录下创建一个新的事件类。例如,创建一个名为 UserRegistered
的事件:
php artisan make:event UserRegistered
这将在 app/Events
目录下生成一个名为 UserRegistered.php
的文件。编辑该文件以定义事件的属性和构造函数。
在 app/Listeners
目录下创建一个新的监听器。例如,创建一个名为 SendWelcomeEmail
的监听器:
php artisan make:listener SendWelcomeEmail --event=UserRegistered
这将在 app/Listeners
目录下生成一个名为 SendWelcomeEmail.php
的文件。编辑该文件以实现事件监听器的逻辑。
在 app/Providers/EventServiceProvider.php
文件中,将新创建的监听器添加到 listen
属性中:
protected $listen = [
UserRegistered::class => [
SendWelcomeEmail::class,
],
];
在 resources/js
目录下创建一个名为 bootstrap-echo.js
的文件。编辑该文件以配置 Laravel Echo 和 Pusher:
import Echo from 'laravel-echo';
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
encrypted: true,
});
同时,在 resources/views/layouts/app.blade.php
文件中,添加以下代码以包含前端脚本:
<script src="{{ mix('/js/bootstrap-echo.js') }}"></script>
现在,您可以在应用程序中触发事件。例如,在控制器中触发 UserRegistered
事件:
use App\Events\UserRegistered;
public function store(Request $request)
{
// ...
event(new UserRegistered($user));
return redirect()->route('success');
}
最后,您可以在前端代码中监听事件。例如,在 resources/views/welcome.blade.php
文件中,添加以下代码以监听 UserRegistered
事件并显示一条消息:
<div id="app">
<echo-subscribe :channel="'user-registered'">
@foreach ($users as $user)
<p>{{ $user->name }} has been registered.</p>
@endforeach
</echo-subscribe>
</div>
现在,当用户注册时,应用程序将触发 UserRegistered
事件,并在前端显示一条消息。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。