什么是广播
WebSocket 让服务器可以实时向客户端推送数据。 Laravel 的广播用于把服务端事件通过 WebSocket 送达前端 JavaScript。 例如订单状态发生变化时,浏览器无需刷新即可立即看到更新。 Laravel 广播的优势在于:服务器端的事件名与数据可以直接分享给客户端。广播基于 Laravel 事件系统。建议先了解事件与监听器的基础。
配置
新项目默认关闭广播。用install:broadcasting 启用:
config/broadcasting.php 与 routes/channels.php。
Laravel Reverb
Laravel 11 及以后推荐使用官方 WebSocket 服务器 Laravel Reverb。 Reverb 支持自托管,无需外部服务即可实现实时通信。安装
在install:broadcasting 加 --reverb 可一次完成 Composer / NPM 依赖安装与 .env 配置:
.env 主要配置
启动 Reverb 服务器
创建广播事件
生成事件类
ShouldBroadcast 接口:
ShouldBroadcast,事件触发时就会自动通过队列广播。
自定义广播数据
默认所有public 属性都会成为广播 payload。若需精简数据,定义 broadcastWith:
自定义广播名称
默认使用类名作为事件名。可用broadcastAs 自定义:
. 前缀以关闭 Laravel 命名空间前缀:
频道类型
频道授权
Private 与 Presence 频道在订阅前会在服务器端进行授权。routes/channels.php
在install:broadcasting 生成的 routes/channels.php 中定义授权回调:
true 或 truthy 值表示授权通过,false 则拒绝。
也可使用路由模型绑定。将频道名写为
orders.{order},回调会得到 Order 实例。使用频道类做授权
频道多时可用频道类组织:routes/channels.php 中注册:
触发事件
ShouldBroadcast 事件与普通事件的触发方式相同:
前端接收
配置 Laravel Echo
若使用 Reverb,在resources/js/bootstrap.js 中设置 Echo:
监听事件
使用 React / Vue Hook
若使用官方 React / Vue 启动套件,可用专用 hook:useEcho 会在组件卸载时自动离开频道。
实战示例:订单状态实时更新
1
启用广播
2
创建事件类
app/Events/OrderShipmentStatusUpdated.php:3
定义频道授权
4
触发事件
5
前端监听
下一步
Laravel Reverb
查看 Reverb 服务器的部署、生产运维与扩展详情。
队列与任务
广播依赖队列处理。了解队列的配置与运维。
事件与监听器
学习作为广播基础的 Laravel 事件系统。