laravel Reverb如何实现实时WebSocket通信_Laravel Reverb实时WebSocket通信教程

首先安装并配置 Laravel Reverb 扩展包,通过 Composer 安装后发布配置文件并运行迁移;接着在 .env 中设置 Redis 为广播驱动,确保 broadcasting 配置正确;然后创建实现 ShouldBroadcast 的事件类,定义频道及授权逻辑,并在控制器触发事件;前端使用 Laravel Echo 连接 Reverb 服务,监听公共或私有频道事件;最后启动 Reverb 服务(php artisan reverb:start),建议生产环境用 Supervisor 管理进程;注意配置 CORS、权限验证及日志调试。

laravel Reverb如何实现实时WebSocket通信_Laravel Reverb实时WebSocket通信教程

Laravel Reverb 是 Laravel 官方推出的轻量级 WebSocket 服务,专为实现实时通信设计。它与 Laravel Echo 配合使用,能轻松实现聊天、通知推送、在线状态更新等实时功能。下面带你一步步搭建基于 Laravel Reverb 的 WebSocket 通信系统。

安装与配置 Laravel Reverb

Reverb 目前作为 Laravel 的官方扩展包,支持 Laravel 10+ 版本。先通过 Composer 安装:

 composer require laravel/reverb 

发布配置文件和迁移表:

 php artisan vendor:publish --provider="LaravelReverbReverbServiceProvider" 

这会生成 config/reverb.php 和数据库迁移文件。运行迁移创建必要的数据表:

 php artisan migrate 

接下来配置环境变量。在 .env 文件中设置 Redis 作为广播驱动(推荐):

 BROADCAST_DRIVER=redis REDIS_CLIENT=predis 

确保 config/broadcasting.php 中的 Redis 连接配置正确。

启用广播事件与频道授权

Laravel Reverb 基于广播系统工作。你需要定义广播事件并指定其频道。例如创建一个新消息通知事件:

 php artisan make:event MessageSent 

编辑该事件类,使其实现 ShouldBroadcast 接口:

 class MessageSent implements ShouldBroadcast {     public $message;      public function __construct($message)     {         $this->message = $message;     }      public function broadcastOn()     {         return new Channel('chat');     } } 

如果使用私有频道,需定义授权逻辑。在 routes/channels.php 中添加:

 Broadcast::channel('chat', function ($user) {     return $user ? true : false; }); 

然后在控制器中触发事件:

laravel Reverb如何实现实时WebSocket通信_Laravel Reverb实时WebSocket通信教程

ViiTor实时翻译

AI实时多语言翻译专家!强大的语音识别、AR翻译功能。

laravel Reverb如何实现实时WebSocket通信_Laravel Reverb实时WebSocket通信教程116

查看详情 laravel Reverb如何实现实时WebSocket通信_Laravel Reverb实时WebSocket通信教程

 event(new MessageSent('Hello World')); 

前端连接 WebSocket 并监听事件

前端使用 Laravel Echo 连接 Reverb 提供的 WebSocket 服务。先安装依赖:

 npm install --save laravel-echo @socket.io/socket.io-client 

resources/js/bootstrap.js 或主 JS 文件中初始化 Echo:

 import { Echo } from 'laravel-echo';  window.io = require('socket.io-client');  window.Echo = new Echo({     broadcaster: 'socket.io',     host: window.location.hostname + ':8080', // Reverb 默认端口     scheme: 'http',     csrfToken: document.querySelector('meta[name="csrf-token"]').getAttribute('content') }); 

监听公共频道事件:

 Echo.channel('chat')     .listen('MessageSent', (e) => {         console.log(e.message);     }); 

若监听私有频道,使用 private() 方法并确保用户已登录:

 Echo.private('chat')     .listen('MessageSent', (e) => {         console.log('Private:', e.message);     }); 

启动 Reverb WebSocket 服务

开发环境下,使用 Artisan 命令启动 Reverb 服务:

 php artisan reverb:start 

默认监听 8080 端口。你可在 config/reverb.php 中修改主机、端口、SSL 设置等。

生产环境建议使用 Supervisor 管理进程,并配合 Nginx 反向代理处理 SSL 和负载均衡。

基本上就这些。只要广播配置正确,前后端连接顺畅,Laravel Reverb 就能稳定运行 WebSocket 通信。注意开启跨域(CORS)和权限验证,避免安全问题。整个流程不复杂但容易忽略细节,比如 Redis 驱动、频道授权或端口占用。调试时多看日志:storage/logs/laravel.log 和浏览器控制台信息都很关键。

以上就是php laravel redis js 前端 bootstrap composer nginx 浏览器 端口 php laravel composer nginx bootstrap echo 接口 private JS 事件 redis 数据库 ssl websocket 负载均衡

大家都在看:

php laravel redis js 前端 bootstrap composer nginx 浏览器 端口 php laravel composer nginx bootstrap echo 接口 private JS 事件 redis 数据库 ssl websocket 负载均衡

事件
上一篇
下一篇
text=ZqhQzanResources