Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Websocket协议处理GraphQL中的文件上载?_Graphql_Apollo_React Apollo_Apollo Client_Apollo Server - Fatal编程技术网

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

如何通过Websocket协议处理GraphQL中的文件上载?,graphql,apollo,react-apollo,apollo-client,apollo-server,Graphql,Apollo,React Apollo,Apollo Client,Apollo Server,我正在创建一个使用GraphQL的web应用程序,需要在WebSocket上处理GraphQL操作。尽管我通过使用订阅传输ws实现了这一点。然而,我一直在处理文件上传。不知何故,我遇到了使用socket.io-stream从客户端到服务器的流文件,但这导致了文本数据和文件有两个单独的API。因此,我想知道是否有一种方法可以将此功能组合到GraphQL中。目前,我也在为此找到一个合适的解决方案,但您可以使用另一种方法,将文件数据转换为base64,并将该数据作为字符串传递。这种方法只适用于小文件,

我正在创建一个使用GraphQL的web应用程序,需要在WebSocket上处理GraphQL操作。尽管我通过使用订阅传输ws实现了这一点。然而,我一直在处理文件上传。不知何故,我遇到了使用socket.io-stream从客户端到服务器的流文件,但这导致了文本数据和文件有两个单独的API。因此,我想知道是否有一种方法可以将此功能组合到GraphQL中。

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

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

幸运的是,解决方案非常简单。我在前端创建了两个GraphQL客户端——一个专门用于WebSocket上的大部分流量,另一个专门用于HTTP上的文件上传操作


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

我也想到了这一点,但这是目前最不可能的选择,因为我计划处理多个文件,甚至曾经处理过大尺寸的文件,比如视频。然后你应该在react中直接使用axios,因为graphql到目前为止还没有对此的本机支持。