gpt4 book ai didi

websocket - 外部 WebSocket 服务器上的 Apollo-Server GraphQL 订阅

转载 作者:行者123 更新时间:2023-12-05 07:02:59 25 4
gpt4 key购买 nike

所以我有一个问题,因为我很难理解它。目前,我有一个使用 Apollo-Server 创建的 GraphQL API 服务器,并使用本地 sqlite 数据库进行持久化。我的查询和变更工作正常。

我还有一个外部 WebSocket 服务器,它不断地在 ws://localhost:8000/websocket 处生成消息(匹配我的 GraphQL/数据库架构)。是否可以让我的 GraphQL 服务器订阅该 websocket 地址并不断解析这些消息并使用适当的突变插入后端数据库?

然后我会有一个 Vue 前端,它会不断显示结果(也许通过 Vue Apollo Clients WS 订阅?)

最佳答案

to have my GraphQL Server subscribe to that websocket address and constantly parse those messages

通常不,它是另一种方式 - 你可以让 ws 服务器调用 graphql 服务器来进行突变。也就是说,如果您想将 WS 用作所有内容(查询、变更和订阅)的主要传输层。

但通常架构将查询和变更分开,因为它们更无状态且更关键,而订阅则更有状态(持久连接)

client -> queries & mutations -> graphql server --> redis pubsub -+
|
client <--> subscriptions <-- graphql subscription server <-------+

(在不需要高负载的简单情况下,可以将两个服务器组合起来使用内存中的 pubsub)

但是,如果您非常愿意,您可以编写自定义代码来连接 graphql 服务器 -> 在后台监听 ws 服务器。参见 https://github.com/enisdenjo/graphql-ws#node-client例如如果您有一些用户上下文,则可能会出现此问题。您将需要在所有用户发生更改的地方建立自定义连接。或者为每个用户建立专用连接

关于websocket - 外部 WebSocket 服务器上的 Apollo-Server GraphQL 订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63403039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com