本文目录导读:

- Laravel Reverb(官方新选择,推荐)
- Laravel WebSockets(成熟稳定)
- Soketi(推荐,需要 Node.js)
- Pusher/Pusher Channels(云服务)
- 推荐选择策略
- 完整示例:Reverb 配置
- Supervisord 配置(生产环境必需)
- 总结建议
在 Laravel 项目中选 WebSocket 服务,主要取决于你的项目规模、实时性要求和部署环境,以下是主流方案的对比和推荐:
Laravel Reverb(官方新选择,推荐)
最适合: 新项目、追求官方支持和简单部署
// 安装 composer require laravel/reverb // 发布配置 php artisan vendor:publish --tag=reverb-config // 启动服务 php artisan reverb:start
优点:
- 官方出品,与 Laravel 集成最好
- 原生支持 Laravel Echo
- 基于 ReactPHP,性能高效
- 配置简单,无需额外依赖
缺点:
- 较新(2023年发布),生态还在成长
- 单机部署为主
Laravel WebSockets(成熟稳定)
最适合: 已有项目升级、需要成熟的社区支持
// 安装 composer require beyondcode/laravel-websockets // 发布配置文件 php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="migrations" php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="config" // 启动 WebSocket 服务 php artisan websockets:serve
优点:
- 稳定,社区成熟,资料多
- 支持多端点和统计面板
- 可以配合 Redis 做分布式
缺点:
- 需要 PHP 常驻内存(需配置 supervise)
- 性能略低于 Reverb
Soketi(推荐,需要 Node.js)
最适合: 已有 Node 环境,追求高性能
# 安装 npm install -g soketi # 启动 soketi start --adapter=local --config_file=/path/to/config.json
优点:
- 性能极佳
- 与 Laravel Echo 完美兼容
- 可以多节点部署
缺点:
- 需要维护 Node.js 服务
- 不是 PHP 技术栈
Pusher/Pusher Channels(云服务)
最适合: 不想维护服务的企业级应用
// config/broadcasting.php
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
'cluster' => env('PUSHER_APP_CLUSTER'),
'useTLS' => true,
],
],
优点:
- 零维护,高可用
- 自带统计和监控
- 支持全球部署
缺点:
- 收费(有免费层)
- 数据经过第三方
推荐选择策略
// 决策树
if (项目是新的 Laravel 应用) {
use Laravel Reverb; // 首选
} elseif (需要大规模分布式) {
if (团队熟悉 Node) {
use Soketi;
} else {
use Laravel WebSockets + Redis;
}
} elseif (不想维护服务) {
use Pusher;
}
完整示例:Reverb 配置
// .env 配置
BROADCAST_DRIVER=reverb
REVERB_SERVER_HOST=0.0.0.0
REVERB_SERVER_PORT=8080
REVERB_APP_ID=your-app-id
REVERB_APP_KEY=your-app-key
REVERB_APP_SECRET=your-app-secret
// bootstrap/providers.php
return [
// 其他服务提供商
App\Providers\AppServiceProvider::class,
// 添加 Reverb
// 自动注册,无需额外添加
];
// 启动服务(生产环境用 Supervisor 守护)
php artisan reverb:start
// 设置 HTTPS/WSS 需要 Nginx 反向代理
Supervisord 配置(生产环境必需)
[program:laravel-reverb] command=php /path/to/artisan reverb:start process_name=%(program_name)s_%(process_num)02d numprocs=1 autostart=true autorestart=true user=www-data redirect_stderr=true stdout_logfile=/path/to/logs/websocket.log
总结建议
- 新项目 → 直接用 Laravel Reverb
- 生产环境 → Reverb + Supervisor + Redis
- 多节点扩展 → Soketi 或 WebSockets + Redis
- 快速原型 → 先用 broadcast:driver=log 调试,再上 Reverb
我的推荐: 首选 Laravel Reverb,因为它体现了 Laravel 官方未来的发展方向,并且原生集成体验最好,如果需要大规模部署,再考虑 Soketi。
选择时注意评估服务器并发需求、运维能力和团队技术栈,不要盲目追求最新技术。