如何通过 Websocket 协议处理 GraphQL 中的文件上传?



我正在创建一个使用 GraphQL 的 Web 应用程序,要求是通过 WebSocket 处理 GraphQL 操作。尽管我设法通过使用订阅传输-ws来实现这一点。但是,我在处理文件上传方面很困难。不知何故,我遇到了使用 socket.io-stream 从客户端到服务器的流式传输文件,但这导致文本数据和文件有 2 个单独的 API。所以,我想知道是否有办法将此功能组合到 GraphQL 中。

我遇到了完全相同的问题,我的文件大小使得转换为base64不是一个可行的选择。我也不想在 GraphQL 之外使用单独的库,因为这需要在我的服务器中进行大量的设置更改(以处理 GraphQL 和非 GraphQL(。

幸运的是,解决方案最终相当简单。我在前端创建了两个 GraphQL 客户端 - 一个专门用于通过 WebSocket 传输的大部分流量,另一个专门用于通过 HTTP 处理涉及文件上传的操作。

现在,我可以根据操作是否涉及文件上传来简单地指定所需的客户端,而无需对服务器进行复杂的更改或影响所有其他查询的实时优势。

目前,我也在寻找合适的解决方案,但您可以使用另一种方法,将文件数据转换为 base64 并将该数据作为字符串传递。这种方法仅适用于小尺寸的文件,因为字符串数据类型不能像缓冲区那样存储大量数据。

最新更新