【问题标题】:Can http send a streamed response without it being a "Range" response/request?http 可以发送流式响应而不是“范围”响应/请求吗?
【发布时间】:2017-03-10 12:14:24
【问题描述】:

http 服务器能否在不响应“范围”请求的情况下逐位响应数据?

例如,假设我想不断地将文本数据流式传输回客户端 - 一个几乎永无止境的文本数据 http 流,客户端作为单个 http 请求的结果接收到该流。

我可以在没有客户端向我发送“Range”请求以响应我发送“Accept-Ranges”标头的情况下执行此操作吗?

我确实看到了code examples of servers streaming data back to clients,但是这些客户端是否应该发送范围标头?

【问题讨论】:

    标签: java http stream http-streaming


    【解决方案1】:

    范围请求请求资源的特定字节范围。可以安全地期望请求在合理的时间内结束。但是,没有什么能阻止您在不关闭/结束常规请求的连接的情况下从服务器推送数据。这只是意味着请求将花费很长时间,并且可能会浪费服务器上的资源。

    这有时被称为“长轮询”,尤其是当连接大部分时间处于空闲状态(但仍处于活动状态)时,仅当服务器发生某些事情时才发送数据。一个例子是基于网络的聊天,尽管在现代,websockets 比 HTTP 更合适。

    【讨论】:

    • 感谢您的反馈!因此,人们可以使用StreamedResponse 从服务器流式传输数据 - 但这只是服务器上的一种便利,除非客户端请求远程响应,否则客户端不会流式传输数据,而服务器仅响应那个范围?因此,即使服务器使用 StreamingOutput 响应的长轮询请求从客户端的角度来看也不是真正的流式传输,如果客户端没有请求范围?
    • 不,只是忘记整个范围的事情(或者如果您想了解更多信息,请阅读它)。
    • 我一般都在谈论 HTTP,但我注意到您链接到有关泽西岛的答案。你在使用泽西岛吗?
    • 是的,我们正在使用 Jersey……我们已经完成了使用范围标头流式传输的大型视频文件,但是对 3rd 方服务的一些请求在 5 分钟后没有关闭,我们'正在尝试决定我们是否应该在更短的时间后关闭它们,因为它们似乎没有响应任何数据,并且正在阻塞线程。
    • 为了 100% 清楚,对 3rd 方服务的请求不是远程请求
    猜你喜欢
    • 2016-08-13
    • 2016-09-09
    • 2012-12-30
    • 2023-03-08
    • 1970-01-01
    • 2011-01-12
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多