在graphql客户端使用时无法建立WebSocket连接
Posted
技术标签:
【中文标题】在graphql客户端使用时无法建立WebSocket连接【英文标题】:WebSocket connection cannot be established when used in graphql client 【发布时间】: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 连接吗? 【参考方案1】:您必须在 graphql 服务器声明中明确指定订阅路径,如下所示
const server = new ApolloServer(
typeDefs,
resolvers,
subscriptions:
**path: "/subscriptions"**
,
context:
pubsub
);
【讨论】:
以上是关于在graphql客户端使用时无法建立WebSocket连接的主要内容,如果未能解决你的问题,请参考以下文章
本人对于netty框架的一些理解,怎么与网站上的websock建立连接
“在建立安全 TLS 连接之前断开客户端网络套接字” - Neo4j/GraphQL
在 Kotlin Android 中使用 Apollo 客户端使用 GraphQL API 时无法执行 HTTP 调用