好久没更新了,最近新项目在使用laravel11(截止目前发文,laravel12也发布了)做开发,自己也是利用有些空闲时间做些除开业务以外的深入学习,因此也就萌生了做一个系列随笔文章的想法。
laravel11
Laravel 11 继续改进 Laravel 10.x,通过引入简化的应用程序结构、每秒速率限制、健康路由、优雅的加密密钥轮换、队列测试改进、Resend 邮件传输、Prompt 验证器集成、新的 Artisan 命令等。此外,Laravel Reverb,一个官方的可扩展 WebSocket 服务器也被引入,为您的应用程序提供强大的实时功能。
————————————————
开篇
laravel Reverb
Laravel Reverb 由 Joe Dixon 开发。Laravel Reverb 为 Laravel 应用程序带来了极速且可扩展的实时 WebSocket 通信,并与 Laravel 现有的事件广播工具(如 Laravel Echo)无缝集成。此外,Reverb 支持通过 Redis 的发布 / 订阅功能进行水平扩展,使您能够将 WebSocket 流量分布在多个后端 Reverb 服务器上,从而支持单个高需求应用程序。
有关 Laravel Reverb 的更多信息,请查阅完整的 Reverb 文档。
开发原由
24年出了一些关于Reverb混响的一些随笔,最近也简单跟踪了下它的源码,laravel无愧于设计大神,Joe Dixon 大佬的封装设计实现非常到位,以至于云里雾里的。Reverb在ws+http混合服务使用的react-php实现,想着国内(个人认知,不代表所有)用它不多,多是swoole、workerman。于是就想到了用swoole来复刻一个版本,一开始,准备基于Reverb来扩展swoole并支持替换react-php。发现代码设计关联很多,我个人难以撼动,于是另辟蹊径,做一个新的扩展包。
因此,在本系列文章中,我将分享如何从零开始为 Laravel11 开发一个自定义扩展包——Swoole-Reverb,目前这个扩展包我也抽空开发,在开发过程中,我遇到了一些问题,如果我觉得有用,我会第一时间总结一些方案,希望能为大家提供一些参考和帮助。最后,也希望能够像到Joe Dixon大神的水准看齐。
一、项目结构和初始设置
首先,我们在 Laravel 应用的同级目录下创建了一个 core
目录,并在其中放置 Swoole-Reverb 扩展包的代码。基本的目录结构如下:
project-root/
├── app/
├── core/
│ └── SwooleReverb/
│ └── src/
│ ├── Providers/
│ │ ├── BroadcastServiceProvider.php
│ │ └── SwooleReverbServiceProvider.php
│ └── Broadcasting/
│ └── SwooleBroadcaster.php
└── composer.json
在主项目的 composer.json
文件中,我们通过 autoload
配置引入了 Swoole-Reverb 的命名空间:
"autoload": {"psr-4": {"App\\": "app/","Database\\Factories\\": "database/factories/","Database\\Seeders\\": "database/seeders/","SwooleReverb\\": "core/SwooleReverb/src/"}
}
同时,在 extra
部分配置了 Laravel 的自动发现信息:
"extra": {"laravel": {"providers": ["SwooleReverb\\Providers\\BroadcastServiceProvider","SwooleReverb\\Providers\\SwooleReverbServiceProvider"]}
}
目前考虑到开发方便,一开始的操作是这样的,后期在做独立包。
注意:自动发现机制只针对通过 Composer 安装到 vendor 目录中的包生效。如果你把包直接放在项目根目录外(比如
core
目录下),Laravel 不会自动发现这些包。解决办法可以是通过 本地路径仓库 将包安装进 vendor 中,或者直接手动注册服务提供者。
meipian.cn/5bhrsgve?share_depth=1
meipian.cn/5bhrxr5p?share_depth=1
meipian.cn/5bhry7yy?share_depth=1
meipian.cn/5bhrynu8?share_depth=1
meipian.cn/5bhrz388?share_depth=1
meipian.cn/5bhrzpjz?share_depth=1
meipian.cn/5bhs048n?share_depth=1
meipian.cn/5bhs19gj?share_depth=1
meipian.cn/5bhs0job?share_depth=1
meipian.cn/5bhs227g?share_depth=1
meipian.cn/5bhs2w45?share_depth=1
meipian.cn/5bhs3g6x?share_depth=1
meipian.cn/5bhs4045?share_depth=1
meipian.cn/5bhs4jmq?share_depth=1
meipian.cn/5bhs52xq?share_depth=1
meipian.cn/5bhs68rg?share_depth=1
meipian.cn/5bhs5njv?share_depth=1
meipian.cn/5bhs7ane?share_depth=1
meipian.cn/5bhs71k8?share_depth=1
meipian.cn/5bhs84fl?share_depth=1
meipian.cn/5bhs7qly?share_depth=1
meipian.cn/5bhs8ey3?share_depth=1
meipian.cn/5bhs8xol?share_depth=1
meipian.cn/5bhs9e5l?share_depth=1
meipian.cn/5bhsa27d?share_depth=1
meipian.cn/5bhsaenr?share_depth=1
meipian.cn/5bhsaq55?share_depth=1
meipian.cn/5bhsdh15?share_depth=1
meipian.cn/5bhse6iv?share_depth=1
meipian.cn/5bhsdtzv?share_depth=1
meipian.cn/5bhsen67?share_depth=1
meipian.cn/5bhsf20l?share_depth=1
meipian.cn/5bhsi901?share_depth=1
meipian.cn/5bhsim31?share_depth=1
meipian.cn/5bhslqcj?share_depth=1
meipian.cn/5bhsm3bx?share_depth=1
meipian.cn/5bhsmr9d?share_depth=1
meipian.cn/5bhsnp4u?share_depth=1
meipian.cn/5bhsncir?share_depth=1
meipian.cn/5bhso1m5?share_depth=1
meipian.cn/5bhspysr?share_depth=1
meipian.cn/5bhsonja?share_depth=1
meipian.cn/5bhsqg8s?share_depth=1
meipian.cn/5bhsr834?share_depth=1
meipian.cn/5bhsqwh5?share_depth=1
meipian.cn/5bhss72t?share_depth=1
meipian.cn/5bhsrp7r?share_depth=1
meipian.cn/5bht06n6?share_depth=1
meipian.cn/5bht0kj8?share_depth=1
meipian.cn/5bht14l3?share_depth=1
meipian.cn/5bht1f29?share_depth=1
meipian.cn/5bht3442?share_depth=1
meipian.cn/5bht3ob4?share_depth=1
meipian.cn/5bht4bmv?share_depth=1
meipian.cn/5bht4uff?share_depth=1
meipian.cn/5bht62bp?share_depth=1
meipian.cn/5bht55tr?share_depth=1
meipian.cn/5bht6tds?share_depth=1
meipian.cn/5bht7isz?share_depth=1
meipian.cn/5bht83mk?share_depth=1
meipian.cn/5bht8ely?share_depth=1
meipian.cn/5bht8sv7?share_depth=1
meipian.cn/5bht97uz?share_depth=1
meipian.cn/5bht9qog?share_depth=1
meipian.cn/5bhtaq76?share_depth=1
meipian.cn/5bhtbitw?share_depth=1
meipian.cn/5bhtezdq?share_depth=1
meipian.cn/5bhtfcwu?share_depth=1
meipian.cn/5bhtfr82?share_depth=1
meipian.cn/5bhtgtz8?share_depth=1
meipian.cn/5bhtgh6s?share_depth=1
meipian.cn/5bhthese?share_depth=1
meipian.cn/5bhth4kp?share_depth=1
meipian.cn/5bhthuz1?share_depth=1
meipian.cn/5bhtifwb?share_depth=1
meipian.cn/5bhtlpfp?share_depth=1
meipian.cn/5bhtl822?share_depth=1
meipian.cn/5bhtm8em?share_depth=1
meipian.cn/5bhtmmqe?share_depth=1
meipian.cn/5bhtn0d7?share_depth=1
meipian.cn/5bhtnrcn?share_depth=1
meipian.cn/5bhtnemg?share_depth=1
meipian.cn/5bhtq0ln?share_depth=1
meipian.cn/5bhtqwi9?share_depth=1
meipian.cn/5bhtqkga?share_depth=1
meipian.cn/5bhtrk6t?share_depth=1
meipian.cn/5bhtrd9b?share_depth=1
meipian.cn/5bhtryss?share_depth=1
meipian.cn/5bhtsni0?share_depth=1
meipian.cn/5bhttpoa?share_depth=1
meipian.cn/5bhtt0hd?share_depth=1
meipian.cn/5bhtw11l?share_depth=1
meipian.cn/5bhtwsue?share_depth=1
meipian.cn/5bhtwhsf?share_depth=1
meipian.cn/5bhtysqd?share_depth=1
meipian.cn/5bhty6cs?share_depth=1
meipian.cn/5bhu4vsl?share_depth=1
meipian.cn/5bhu60iv?share_depth=1
meipian.cn/5bhu6pfy?share_depth=1
meipian.cn/5bhu7vc8?share_depth=1
meipian.cn/5bhu7eza?share_depth=1
meipian.cn/5bhu8ccc?share_depth=1
meipian.cn/5bhu8pzx?share_depth=1
meipian.cn/5bhu9iki?share_depth=1
meipian.cn/5bhu98ak?share_depth=1
meipian.cn/5bhua29y?share_depth=1
meipian.cn/5bhuamr6?share_depth=1
meipian.cn/5bhub0ek?share_depth=1
meipian.cn/5bhud4ww?share_depth=1
meipian.cn/5bhudxcl?share_depth=1
meipian.cn/5bhuedh9?share_depth=1
meipian.cn/5bhueut0?share_depth=1
meipian.cn/5bhufamk?share_depth=1
meipian.cn/5bhufwo1?share_depth=1
meipian.cn/5bhujoni?share_depth=1
meipian.cn/5bhuk2p6?share_depth=1
meipian.cn/5bhukw4d?share_depth=1
meipian.cn/5bhuklj3?share_depth=1
meipian.cn/5bhulmpu?share_depth=1
meipian.cn/5bhul8e5?share_depth=1
meipian.cn/5bhum661?share_depth=1
meipian.cn/5bhumjo2?share_depth=1
meipian.cn/5bhun9yc?share_depth=1
meipian.cn/5bhumxcp?share_depth=1
meipian.cn/5bhuo0kf?share_depth=1
meipian.cn/5bhunmr8?share_depth=1
meipian.cn/5bhuot6f?share_depth=1
meipian.cn/5bhuodwx?share_depth=1
meipian.cn/5bhupb50?share_depth=1
meipian.cn/5bhupo0e?share_depth=1
meipian.cn/5bhuq38t?share_depth=1
meipian.cn/5bhuqlav?share_depth=1
meipian.cn/5bhur2nw?share_depth=1
meipian.cn/5bhuriel?share_depth=1
meipian.cn/5bhuruum?share_depth=1
meipian.cn/5bhmkft2?share_depth=1
meipian.cn/5bhmk9k4?share_depth=1
meipian.cn/5bhmm2we?share_depth=1
meipian.cn/5bhmlr7e?share_depth=1
meipian.cn/5bhmmfbe?share_depth=1
meipian.cn/5bhmn1m3?share_depth=1
meipian.cn/5bhmnbwc?share_depth=1