在http2中,您可以在请求的主体完全发送之前,向其发送标头响应。当然,然后您必须处理发送http 200 OK响应,然后在以后出现故障。这对我们很好。我想知道对于ndjson的流式上传情况,是否可以做到相同。在流完全发送之前发回响应。
即1.收到http1.1请求2.我们进行身份验证,如果成功,则当他们在3.在处理ndjson的流(每个记录)时,我们将成功或失败的流送回,以便它们可以轻松地从中断处取回]
然后,该解决方案允许他们发送1条记录或根据需要发送任意数量的记录。我知道我们有支持的Web服务器,但是不确定那里的所有客户端。我很好奇规范中是否有任何内容违反规范?]
谢谢,院长
发送响应头之前也可以在HTTP / 1.1中读取请求内容。
事实上,从历史上讲,这在HTTP / 1.1中始终是可能的,并且HTTP / 2刚刚从其前身继承了此行为。
[典型情况是服务器应用程序产生意外错误(例如,在Java中为NullPointerException
):服务器应用程序无法读取客户端仍在发送的请求内容(由于意外错误),并且服务器通常会产生一个响应500,指示它想要关闭连接。
[另一种典型情况是回显或转换服务器,您在其中上载了一些内容,这些内容会被即时回显或转换并发送回客户端。
代理是HTTP是全双工的事实的主要示例-代理在将请求内容发送到服务器之前不会缓冲请求内容,并且如果服务器在代理发送请求时进行答复,则代理不会缓冲请求内容。响应内容(等待请求完成)-它只是将响应内容发送到客户端。
虽然在规范中没有明确说明这种全双工行为,但它显然是在现实生活中发生的,因此客户端和服务器都应正确处理此情况。
如果我理解正确,则可以在HTTP之上使用JSON协议,以将服务器已处理的每个JSON块通知客户端。您基本上有一个带有“长”响应的“长”请求,这在任何体面的HTTP实现中都可以正常工作。