目录
3. Create a Broadcastable Event
4. Authorize Private Channels (if needed)
5. Dispatch the Event in Your Controller
6. Listen on the Client Side with Laravel Echo
Summary of Key Steps
首页 php框架 Laravel 如何使用Laravel的活动广播?

如何使用Laravel的活动广播?

Aug 01, 2025 am 07:19 AM
laravel 事件广播

设置广播驱动并安装Pusher包,配置.env文件中的凭证;2. 在RouteServiceProvider中启用Broadcast::routes()以启用广播路由;3. 创建实现ShouldBroadcast接口的事件类,定义broadcastOn、broadcastAs和broadcastWith方法;4. 在routes/channels.php中定义私有频道的授权逻辑;5. 在控制器中通过event()或dispatch()分发事件;6. 前端使用Laravel Echo连接Pusher并监听指定频道的事件,实现客户端实时更新。完整流程确保事件从后端安全广播到前端,适用于实时通知、聊天等场景。

How to use event broadcasting in Laravel?

Event broadcasting in Laravel allows you to broadcast events from your server to client-side applications in real time, typically using WebSockets. This is useful for features like live notifications, chat systems, or real-time dashboards. Laravel makes this easy with its event broadcasting system, often used with tools like Pusher, Redis, and Laravel Echo.

How to use event broadcasting in Laravel?

Here’s how to use event broadcasting in Laravel:


1. Set Up Broadcasting Driver

First, choose a broadcasting driver. The most common is Pusher, but Laravel also supports Redis and others.

How to use event broadcasting in Laravel?
  • Install the required package:

    composer require pusher/pusher-php-server
  • In .env, set your broadcasting driver and credentials:

    How to use event broadcasting in Laravel?
    BROADCAST_DRIVER=pusher

PUSHER_APP_ID=your_app_id PUSHER_APP_KEY=your_app_key PUSHER_APP_SECRET=your_app_secret PUSHER_APP_CLUSTER=mt1

- Make sure `config/broadcasting.php` is set to use Pusher (default when configured).

---

### 2. **Enable Broadcasting in RouteServiceProvider**

Laravel disables broadcasting routes by default. You need to uncomment the `Broadcast::routes()` line in `App\Providers\RouteServiceProvider` within the `boot` method:

```php
use Illuminate\Support\Facades\Broadcast;

public function boot()
{
    Broadcast::routes();
    // ...
}

This enables the /broadcasting/auth route for private channels.


3. Create a Broadcastable Event

Generate an event using Artisan:

php artisan make:event NewMessageSent

In your event class (NewMessageSent.php), implement ShouldBroadcast to make it broadcastable:

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;

class NewMessageSent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $message;

    public function __construct($message)
    {
        $this->message = $message;
    }

    public function broadcastOn()
    {
        return new PrivateChannel('chat.' . $this->message->chat_id);
    }

    public function broadcastAs()
    {
        return 'message.sent';
    }

    public function broadcastWith()
    {
        return ['message' => $this->message->content];
    }
}
  • broadcastOn(): Defines the channel (public, private, or presence).
  • broadcastAs(): Optional custom event name.
  • broadcastWith(): Customize data sent to clients.

Use PrivateChannel or PresenceChannel if you need authorization.


4. Authorize Private Channels (if needed)

For private channels like chat.1, Laravel requires authorization. Define the authorization logic in routes/channels.php:

use Illuminate\Support\Facades\Broadcast;

Broadcast::channel('chat.{chatId}', function ($user, $chatId) {
    // Return true if the user can access this chat
    return $user->chats->contains('id', $chatId);
});

This ensures only authorized users receive events on that channel.


5. Dispatch the Event in Your Controller

use App\Events\NewMessageSent;

// Inside a controller method
event(new NewMessageSent($message));
// Or
NewMessageSent::dispatch($message);

When dispatched, Laravel broadcasts the event to the specified channel.


6. Listen on the Client Side with Laravel Echo

Install Laravel Echo and Pusher JS in your frontend:

npm install --save laravel-echo pusher-js

Initialize Laravel Echo in your JS (e.g., resources/js/bootstrap.js):

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,
    authEndpoint: '/broadcasting/auth',
    auth: {
        headers: {
            Authorization: 'Bearer '   localStorage.getItem('token'), // if using API auth
        },
    },
});

Make sure to expose the Pusher key in .env:

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

Then, listen for the event:

Echo.private(`chat.1`)
    .listen('message.sent', (e) => {
        console.log(e.message);
    });

If you didn’t use broadcastAs(), use the full event class name:

.listen('.App.Events.NewMessageSent', (e) => { ... })

Summary of Key Steps

  • ✅ Set BROADCAST_DRIVER and credentials
  • ✅ Run Broadcast::routes() in RouteServiceProvider
  • ✅ Create event implementing ShouldBroadcast
  • ✅ Define channel and optional auth in routes/channels.php
  • ✅ Dispatch event from backend
  • ✅ Use Laravel Echo on frontend to listen

Using event broadcasting in Laravel isn’t complicated once you’ve set up the driver and understood the flow. It works great with Vue/React apps and APIs, especially when combined with Sanctum for SPA authentication.

Basically, just make the event broadcastable, secure the channel if needed, and listen on the frontend.

以上是如何使用Laravel的活动广播?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

Rimworld Odyssey温度指南和Gravtech
1 个月前 By Jack chen
Rimworld Odyssey如何钓鱼
1 个月前 By Jack chen
我可以有两个支付帐户吗?
1 个月前 By 下次还敢
初学者的Rimworld指南:奥德赛
1 个月前 By Jack chen
PHP变量范围解释了
3 周前 By 百草

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Laravel 教程
1603
29
PHP教程
1506
276
Laravel中的配置缓存是什么? Laravel中的配置缓存是什么? Jul 27, 2025 am 03:54 AM

Laravel的配置缓存通过合并所有配置文件为一个缓存文件来提升性能。在生产环境中启用配置缓存可减少每次请求时的I/O操作和文件解析,从而加快配置加载速度;1.应在部署应用、配置稳定且无需频繁更改时启用;2.启用后修改配置需重新运行phpartisanconfig:cache才会生效;3.避免在配置文件中使用依赖运行时条件的动态逻辑或闭包;4.排查问题时应先清除缓存、检查.env变量并重新缓存。

如何在Laravel中创建辅助文件? 如何在Laravel中创建辅助文件? Jul 26, 2025 am 08:58 AM

Createahelpers.phpfileinapp/HelperswithcustomfunctionslikeformatPrice,isActiveRoute,andisAdmin.2.Addthefiletothe"files"sectionofcomposer.jsonunderautoload.3.Runcomposerdump-autoloadtomakethefunctionsgloballyavailable.4.Usethehelperfunctions

如何在Laravel测试中模拟对象? 如何在Laravel测试中模拟对象? Jul 27, 2025 am 03:13 AM

UseMockeryforcustomdependenciesbysettingexpectationswithshouldReceive().2.UseLaravel’sfake()methodforfacadeslikeMail,Queue,andHttptopreventrealinteractions.3.Replacecontainer-boundserviceswith$this->mock()forcleanersyntax.4.UseHttp::fake()withURLp

如何在Laravel中实施推荐系统? 如何在Laravel中实施推荐系统? Aug 02, 2025 am 06:55 AM

创建referrals表记录推荐关系,包含推荐人、被推荐人、推荐码及使用时间;2.在User模型中定义belongsToMany和hasMany关系以管理推荐数据;3.用户注册时生成唯一推荐码(可通过模型事件实现);4.注册时通过查询参数捕获推荐码,验证后建立推荐关系并防止自荐;5.当被推荐用户完成指定行为(如下单)时触发奖励机制;6.生成可分享的推荐链接,可使用Laravel签名URL增强安全性;7.在仪表板展示推荐统计信息,如总推荐数和已转化数;必须确保数据库约束、会话或Cookie持久化、

如何运行Laravel项目? 如何运行Laravel项目? Jul 28, 2025 am 04:28 AM

checkphp> = 8.1,作曲家和韦伯佛; 2.cleteproeateprojectandruncomposerinstall; 3.copy.env.exampleto.envandrunphpartisankey :生成; 4.setDatabasecredentialsin.envandrunphpartisanmigrate-seed; 5.StartServerServerWithPhpartisanServe; 6.optionallyrunnnpmins

如何在Laravel中播种数据库? 如何在Laravel中播种数据库? Jul 28, 2025 am 04:23 AM

创建seeder文件:使用phpartisanmake:seederUserSeeder生成seeder类,并在run方法中通过模型工厂或数据库查询插入数据;2.在DatabaseSeeder中调用其他seeder:通过$this->call()按顺序注册UserSeeder、PostSeeder等,确保依赖关系正确;3.运行seeder:执行phpartisandb:seed运行所有注册的seeder,或使用phpartisanmigrate:fresh--seed重置并重新填充数据;4

如何使用Laravel构建REST API? 如何使用Laravel构建REST API? Jul 30, 2025 am 03:41 AM

创建新Laravel项目并启动服务;2.生成模型、迁移和控制器并运行迁移;3.在routes/api.php中定义RESTful路由;4.在PostController中实现增删改查方法并返回JSON响应;5.使用Postman或curl测试API功能;6.可选地通过Sanctum添加API认证;最终得到一个结构清晰、功能完整且可扩展的LaravelRESTAPI,适用于实际应用。

使用Laravel中的活动和听众。 使用Laravel中的活动和听众。 Jul 26, 2025 am 08:21 AM

在Laravel中使用事件和监听器是一种解耦主逻辑的有效方式。1.创建事件和监听器可通过Artisan命令生成并绑定至EventServiceProvider或启用自动发现机制。2.实际使用中需注意一个事件可对应多个监听器、队列失败重试策略、保持监听器轻量及注册事件订阅者。3.测试调试时应确认事件触发、监听器绑定、队列驱动状态,并设置QUEUE_CONNECTION=sync以同步执行便于排查问题。4.高级技巧包括根据条件动态控制监听器执行或注册,但建议进阶用户使用。掌握这些要点有助于提升代码维

See all articles