Javascript 创建具有多部分响应的批处理HTTP API

Javascript 创建具有多部分响应的批处理HTTP API,javascript,rest,xmlhttprequest,http-headers,multipart,Javascript,Rest,Xmlhttprequest,Http Headers,Multipart,实际上,我已经创建了一个批处理HTTP API,它接收一个JSON数组,其中包含对后端服务器的许多不同请求。批处理API只需将所有这些请求调用到负载平衡器,等待所有请求的返回,然后向客户端返回一个新的JSON 客户机接收到一个巨大的JSON数组响应,其索引与请求位于同一位置,因此很容易知道针对哪个请求处理了什么响应 此API的动机是解决5个浏览器同时连接问题,并提高性能,因为批处理API可以更直接地访问服务器(在这两者之间我们没有反向代理或SSL服务器) 该服务运行得很好,但现在我有了一些新的要

实际上,我已经创建了一个批处理HTTP API,它接收一个JSON数组,其中包含对后端服务器的许多不同请求。批处理API只需将所有这些请求调用到负载平衡器,等待所有请求的返回,然后向客户端返回一个新的JSON

客户机接收到一个巨大的JSON数组响应,其索引与请求位于同一位置,因此很容易知道针对哪个请求处理了什么响应

此API的动机是解决5个浏览器同时连接问题,并提高性能,因为批处理API可以更直接地访问服务器(在这两者之间我们没有反向代理或SSL服务器)

该服务运行得很好,但现在我有了一些新的要求,因为它正在获得更多的使用。首先,该服务可以使用大量内存,因为它对每个请求都有一个缓冲区,只有在所有响应就绪时才会刷新该缓冲区(我使用的是有序JSON数组)。此外,由于传递所有请求可能需要一些时间,因此客户端需要等待所有处理完成后才能接收到单个字节

我计划更改服务,以便在每个响应可用时立即返回(并解决上述两个问题)。并希望与您分享和验证我的想法:

  • 我将把响应从JSON响应更改为多部分响应
  • 服务器将包括响应的每个部分的索引
  • 一旦响应可用,服务器将刷新响应
  • 客户机XHR需要理解多部分内容类型响应,并且能够在每个部分可用时立即处理它们
  • 我将创建一个PoC来验证每一步,但现在我想验证这个想法,并听取一些想法。以下是我对解决方案的一些疑问:

  • 从我所读到的,我是在doubt的内容类型是正确的反应。多部分/混合?多部分/摘要
  • 我是否可以使用accept请求头来确定客户端是否能够处理新的服务实现?如果是这样的话,那么这个的正确接受头是什么?我的计划是使用相同的端点,但非常接受头
  • 如何开发一个XHR客户机,使其能够在单个响应的多个部分可用时立即处理它们?我在网上找到了一些想法,但我对此并不完全有信心
  • 我将把响应从JSON响应更改为多部分响应 答复
  • 服务器将包括每个部分的 回应
  • 一旦响应可用,服务器将刷新响应
  • 客户端XHR需要了解多部分内容类型响应和 一旦可用,就能够处理每个零件
  • XHR协议将不支持通过来自客户端的单个请求执行此工作流。由于XHR严重依赖HTTP协议进行通信,所以XHR遵循HTTP连接规则。第一条也是最重要的规则:HTTP连接总是由客户端发起的。另一条规则:XHR返回整个内容体或失败

    工作流的含义是,多部分响应的每个部分都必须由客户端单独请求

  • 从我所读到的,我是在doubt的内容类型是正确的 答复。多部分/混合?多部分/摘要 您应该有所怀疑,因为规范中没有这样做的规定。response type属性仅限于可以设置override MIME type标头,但这不会更改响应类型。在这种情况下,XHR规范非常清楚它将返回什么。它是上面列出的类型之一

  • 我能用一张支票吗 请求头,用于标识客户端是否能够处理新的 服务实现?如果是,正确的accept标头是什么 这我的计划是使用相同的端点,但非常接受头 自定义HTTP标头旨在帮助我们告诉服务器我们在客户机上的功能。这很容易做到。它不一定要在
    accept
    头中(因为这也是一个已定义的MIME类型列表)

  • 怎么 我可以开发一个能够处理一个系统的许多部分的XHR客户端吗 一有消息就立即回复?我在网上找到了一些想法 但我并不完全相信这一点
  • XHR由客户端以本机方式处理,并且由于各种安全原因不能被覆盖。因此,出于这个原因,这不太可能成为一种解决方案

    注意:通常情况下,可能会建议使用定制版本的Chromium,但您的限制不允许这样做

  • 我将把响应从JSON响应更改为多部分响应 答复
  • 服务器将包括每个部分的 回应
  • 一旦响应可用,服务器将刷新响应
  • 客户端XHR需要了解多部分内容类型响应和 一旦可用,就能够处理每个零件
  • XHR协议将不支持通过来自客户端的单个请求执行此工作流。由于XHR严重依赖HTTP协议进行通信,所以XHR遵循HTTP连接规则。第一条也是最重要的规则:HTTP连接总是由客户端发起的。另一条规则:XHR返回整个内容体或失败

    工作流的含义是,多部分响应的每个部分都必须由客户端单独请求

  • 从我所读到的,我是在doubt的内容类型是正确的 答复。多部分/混合?多部分/摘要 您应该有所怀疑,因为规范中没有这样做的规定。response type属性仅限于可以设置override MIME type标头,但这不会更改