0

0

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

下次还敢

下次还敢

发布时间:2025-09-29 08:13:02

|

936人浏览过

|

来源于php中文网

原创

首先安装并配置 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="Laravel\Reverb\ReverbServiceProvider"

这会生成 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;
});

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

Sora
Sora

Sora是OpenAI发布的一种文生视频AI大模型,可以根据文本指令创建现实和富有想象力的场景。

下载
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文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2652

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1658

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1515

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

952

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1418

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1234

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1468

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1306

2023.11.13

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.8万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 7.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号