【问题标题】:WebSocket connection cannot be established when used in graphql client在graphql客户端使用时无法建立WebSocket连接
【发布时间】:2021-07-25 22:34:34
【问题描述】:

我正在尝试通过来自 graphql 服务器的订阅将数据获取到客户端。为此,我们需要先建立一个 websocket 连接。但是,当我尝试这样做时,我会收到以下错误

错误:

WebSocket connection to 'ws://localhost:8888/' failed: Unexpected response code: 400
liveReload — index.js:53

客户端代码:

import { WebSocketLink } from "@apollo/client/link/ws";
const wsLink = new WebSocketLink({
  uri: "ws://localhost:8888",
  options: {
    reconnect: false
  }
});

我 100% 确定 localhost:8888 是托管 graphql 服务器的位置。我在 safari 和 firefox 中都尝试过

【问题讨论】:

  • 如果您查看响应本身,是否有任何错误描述?例如,您在 devtools 中查看网络检查器,您可能会看到有关失败的更多信息。
  • 你确定这个 API 支持 websocket 连接吗?

标签: reactjs websocket graphql apollo-client graphql-subscriptions


【解决方案1】:

您必须在 graphql 服务器声明中明确指定订阅路径,如下所示

const server = new ApolloServer({
  typeDefs,
  resolvers,
  subscriptions: {
    **path: "/subscriptions"**
  },
  context: {
    pubsub
  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    相关资源
    最近更新 更多