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

Laravel GraphQL运行Subscription报错:无法连接websocket端点如何解决?

报错根因与解决方法

核心根因

该报错是graphql-playground无法与后端建立WebSocket连接导致,属于传输层连接故障,和Subscription业务逻辑本身无关。

排查与解决步骤

  • 确认WebSocket服务已启动
    Laravel默认的8000端口是HTTP服务端口,不处理WebSocket请求,需要单独启动对应服务:
    • 若使用Lighthouse+Laravel Websockets扩展,执行命令php artisan websockets:serve启动服务,默认监听6001端口
    • 若使用Pusher兼容方案,确认Pusher相关配置(app_id、key、secret、host、端口)与.env文件中配置完全一致
  • 修正graphql-playground的WebSocket端点
    playground默认会复用当前HTTP地址的端口作为WebSocket端口,需要手动修改端点配置:
    如果你用Laravel Websockets默认配置,将WebSocket端点改为ws://127.0.0.1:6001/graphql即可;如果服务开启了HTTPS,需要将前缀改为wss://
  • 检查GraphQL路由配置
    确认你的路由文件中已经注册了GraphQL的WebSocket路由,Lighthouse默认会自动注册,如果你手动修改了路由前缀,需要对应调整WebSocket端点的路径
  • 修复现有代码疏漏
    你的现有代码存在两个会影响后续订阅生效的问题:
    1. UserMutator的create方法中注释了return $user;,Mutation需要返回User对象才能触发后续广播逻辑,取消该注释即可
    2. 你的Subscription查询中请求的username、password字段在User类型定义中不存在,要么删除查询中的这两个字段,要么给User类型补充对应字段定义
  • 检查跨域配置
    如果你的graphql-playground访问地址和Laravel服务不是同域同端口,需要确认config/cors.php中已经将graphql/*加入允许路径,且请求源在允许列表中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:24:02