Laravel Reverb连接类型错误及WebSocket连接失败问题求助
解决方案
一、修复Reverb类型不匹配错误
该错误源于Reverb内部依赖注入的类实例不匹配,可按以下步骤解决:
- 清除Laravel缓存与Composer自动加载缓存:
php artisan cache:clear php artisan config:clear composer dump-autoload --optimize - 确认版本兼容性:检查Laravel版本(如10.x/11.x)与
laravel/reverb ^1.5是否匹配,若不兼容,调整composer.json中的版本约束后执行composer update laravel/reverb。 - 重新发布Reverb配置文件(操作前请备份现有配置):
php artisan vendor:publish --tag=reverb-config
二、修复Apache代理与WebSocket连接失败问题
GoDaddy cpanel环境下,需在Pre VirtualHost Include中添加正确的WebSockets代理规则:
RewriteEngine On # 代理WebSocket请求至Reverb服务 RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteRule ^/app/(.*) ws://127.0.0.1:3000/app/$1 [P,L] # 代理HTTP请求至Reverb服务(适配Pusher协议REST接口) RewriteCond %{REQUEST_URI} ^/app/ RewriteRule ^/app/(.*) http://127.0.0.1:3000/app/$1 [P,L] # 反向代理地址映射 ProxyPassReverse /app/ http://127.0.0.1:3000/app/ ProxyPassReverse /app/ ws://127.0.0.1:3000/app/
配置完成后,通过cpanel的「Apache Restart」工具或命令行重启Apache服务。
三、验证服务与前端配置
- 确保Reverb服务正常启动:
/opt/cpanel/ea-php83/root/usr/bin/php artisan reverb:start --host=127.0.0.1 --port=3000 --debug - 检查前端
echo.js配置,确保WebSocket端点与协议正确:import Echo from 'laravel-echo'; import Pusher from 'pusher-js'; window.Pusher = Pusher; window.Echo = new Echo({ broadcaster: 'reverb', key: import.meta.env.VITE_REVERB_APP_KEY, wsHost: window.location.hostname, wsPort: 443, wssPort: 443, forceTLS: true, enabledTransports: ['ws', 'wss'], }); - 确认
.env中的Reverb核心配置:REVERB_APP_KEY=your-app-key REVERB_APP_ID=your-app-id REVERB_HOST=127.0.0.1 REVERB_PORT=3000 REVERB_SCHEME=http REVERB_DEBUG=true
四、额外排查步骤
- 查看Reverb服务的debug日志,确认是否存在其他潜在错误;
- 验证服务器本地端口3000的通信权限(GoDaddy环境本地通信通常不受限,若有异常需调整防火墙规则);
- 使用
curl测试Reverb HTTP接口可用性:curl http://127.0.0.1:3000/app/your-app-key?protocol=7&client=js&version=8.4.0
内容的提问来源于stack exchange,提问作者viktoriya ivanets
相关产品推荐
相关产品推荐

