You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多服务器部署Laravel Websockets时队列端无法广播通知如何解决

初始疑问解答

  • 队列工作服务器不需要运行php artisan websockets:serve,仅应用服务器需要运行该服务作为统一的WebSocket消息中心,多服务端部署会导致消息路由分散,用户端无法接收到对应消息。
  • 初始配置中将队列服务器的PUSHER_ENDPOINT_HOST设为应用服务器私有IP是完全正确的,后续修改为公有域名反而增加了不必要的SSL验证环节,更容易出现连通问题。

当前配置问题排查&修复步骤

1. 清理冗余服务

首先停止队列服务器上的php artisan websockets:serve进程,删除Laravel Forge中对应队列服务器的WebSocket守护进程,仅保留应用服务器的WebSocket服务即可。

2. 修正队列服务器专属配置

队列服务器走私有网络直接访问应用服务器的WebSocket服务即可,无需走公网域名和SSL,修改队列服务器.env配置:

# PUSHER_APP_ID、KEY、SECRET、CLUSTER保持和应用服务器一致
PUSHER_ENDPOINT_HOST=应用服务器私有IP
PUSHER_PORT=6001
PUSHER_SCHEME=http

队列服务器的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'),
         'encrypted' => in_array(config('app.env'), ['production', 'staging']),
         'host' => env('PUSHER_ENDPOINT_HOST', '127.0.0.1'),
         'port' => 6001,
         'scheme' => 'http'
      ],
],

应用服务器的配置可保持现有公网域名配置,用于给前端浏览器提供WebSocket连接,两端配置不需要完全一致。

3. 修复前端配置笔误

  • 修正.env文件中VITE配置漏写的$符号:
VITE_PUSHER_SCHEME=${PUSHER_SCHEME}
VITE_PUSHER_PORT=${PUSHER_PORT}
  • 修正echo.js端口配置,公网WebSocket统一走443端口即可:
window.Echo = new Echo({
      broadcaster: 'pusher',
      key: import.meta.env.VITE_PUSHER_APP_KEY,
      cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER,
      wsHost: import.meta.env.VITE_PUSHER_HOST,
      wsPort: 443,
      wssPort: 443,
      forceTLS: true,
      disableStats: true,
      scheme: import.meta.env.VITE_PUSHER_SCHEME,
      enabledTransports: ["ws", "wss"],
});

修改完成后重新编译前端资源。

4. 验证内网连通性

在队列服务器执行以下命令,验证是否能正常访问应用服务器的WebSocket服务端口:

curl http://应用服务器私有IP:6001/api/rooms

正常会返回JSON格式的房间列表数据,若访问失败,检查应用服务器防火墙规则,开放私有网段对6001端口的访问权限即可。


内容的提问来源于stack exchange,提问作者senty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:36:05