Graphiql 不显示订阅的传入数据
Posted
技术标签:
【中文标题】Graphiql 不显示订阅的传入数据【英文标题】:Graphiql does not display incoming data for subscriptions 【发布时间】:2020-11-12 00:51:15 【问题描述】:我使用 graphql-java 实现了一个 graphql 服务器,它通过 websockets 提供订阅。
当我使用 websocket CL 工具 wscat 订阅时,一切都按预期工作。
这是服务器发布的数据的外观 (
$wscat -c "ws://localhost:9876/subscriptions"
> "query" : "subscriptionresourceSubscription(hasTypes : [])id"
< "type":"subscription_success"
< "payload":"data":"resourceSubscription":"id":"...","id":"1","type":"subscription_data" (*1)
JSON 响应格式复制自 this 教程。我还尝试只发送没有“有效负载”包装器的“数据”块。
对于 graphiql,我使用 graphiql-spring-boot-starter v7.1.0 包。当我从 graphiql 发起订阅时,显示显示:
“您的订阅数据将在服务器发布后出现在此处!”
graphiql 将查询发送到 websocket 端点:
"type":"connection_init","payload":
"id":"1","type":"start","payload":"query":"subscription[...]","variables":null
在服务器上创建一个websocket,新的数据实际上是发布到已建立的websocket(如*1),但是,它没有显示在graphiql中,传入的数据完全被忽略提示仍然存在。
有人知道为什么会这样吗? JSON 响应是否格式不正确?
【问题讨论】:
【参考方案1】:必要的响应类型是: "type": "data",... 而不是 "type" : "subscription_data",...
【讨论】:
以上是关于Graphiql 不显示订阅的传入数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 gatsby-source-graphql 时,GraphIQL 资源管理器未在 Gatsby 中显示
Apollo useSubscription 挂钩不发出新数据