Laravel 8集成laravel-websockets无报错连接失败排查求助
你遇到的连接失败问题核心是SSL配置缺失与广播配置不匹配,按以下步骤排查即可解决:
排查步骤
1. 补全WebSocket SSL配置
当前前端发起的是wss加密WebSocket请求,但websockets.php中的SSL配置未加载站点证书,导致服务端无法处理加密请求。
在你的.env文件中添加站点SSL证书路径配置:
# 替换为你实际的证书文件路径 LARAVEL_WEBSOCKETS_SSL_LOCAL_CERT=/www/server/panel/vhost/cert/yourdomain.com/fullchain.pem LARAVEL_WEBSOCKETS_SSL_LOCAL_PK=/www/server/panel/vhost/cert/yourdomain.com/privkey.pem # 若证书设置了密码则添加该行,无密码可忽略 # LARAVEL_WEBSOCKETS_SSL_PASSPHRASE=你的证书密码
2. 修正广播服务配置
你当前的broadcasting.php默认会请求Pusher官方服务,没有指向本地搭建的WebSocket服务,修改connections.pusher.options配置如下:
'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, // 新增以下3项配置 'host' => '127.0.0.1', 'port' => 6001, 'scheme' => 'https', ], ],
3. 验证端口与网络规则
- 执行
netstat -tulpn | grep 6001确认6001端口监听地址为0.0.0.0,而非仅本地回环127.0.0.1 - 确认服务器操作系统防火墙、云服务商安全组都已开放6001端口入站规则
4. 可选调试方案
若暂时不需要加密连接,可先将前端WebSocket连接协议改为ws,同时将broadcasting.php中的useTLS改为false、scheme改为http,先验证非加密连接是否正常,排除其他配置问题后再配置SSL。
所有配置修改完成后,重启php artisan websockets:serve服务即可生效。
内容的提问来源于stack exchange,提问作者m33ts4k0z
相关产品推荐
相关产品推荐

