在graphql客户端使用时无法建立WebSocket连接

问题描述

我正在尝试通过订阅从 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 中都尝试过

解决方法

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...