http spec:等待创建“文件”

时间:2018-07-23 11:37:06

标签: http specifications rfc

是否有与http相关的规范,可以帮助我实现“等待文件创建”?

这是应该执行的:

  1. 名为“接收器”的服务器连接到“中间”服务器,并等待直到在该服务器上创建了文件
  2. 服务器“ creator”创建一个文件并将其发送到服务器“ middle”
  3. 在“中间”服务器上可用整个文件后,服​​务器“接收器”应立即开始下载。

我知道我可以使用websockets和自定义方法来实现此目的。

但是在采用这种方式之前,我想知道是否存在涉及此用例的http相关规范。

1 个答案:

答案 0 :(得分:3)

简短答案

是的,HTTP规范本身(RFC7230)已经涵盖了您的用例 RFC6202中还描述了一种称为HTTP Long Polling的已知机制。 服务器在返回响应之前要等待几秒钟。

长答案

HTTP是一种灵活的协议,以至于HTTP规范本身(RFC7230)已经涵盖了您的用例。 在Section 1中(重点是我):

  

HTTP是信息系统的通用接口协议。它是   旨在通过以下方式隐藏服务实施方式的详细信息   向客户展示一个统一的界面,该界面独立于   提供的资源类型。同样,服务器不需要   意识到每个客户的目的:可以在以下位置考虑HTTP请求:   隔离而不是与特定类型的客户端相关联   或预定的应用程序顺序。结果是   可以在许多不同环境中有效使用的协议   实施可以随时间独立发展。

该规范允许服务器连接到其他服务器并等待某些操作(“隐藏服务实现方式的详细信息”) 并且某物可以是文件或其他任何东西(“与提供的资源类型无关”)。

您应注意,该规范并未定义服务器的内部工作原理。 它没有定义服务器为提供响应所必须执行的操作,正如Section 1(强调我的内容)中所述:

  

这种灵活性的一个后果是协议不能   根据界面后面发生的情况进行定义。

在您的用例中,服务器“接收器”实际上是客户端,因为它连接到希望接收文件的服务器“中间”。 服务器“中间”正在等待另一台服务器做某事这一事实是无关紧要的,因为规范没有定义接口后面应该发生什么。

但是,如果您正在寻找一种类似的机制,即服务器还会等待某些东西, 一个示例是RFC6202中描述的HTTP长轮询(重点是我的):

  

HTTP长轮询:服务器尝试“保持打开状态”(不是   立即回复)每个HTTP请求,仅在   有要交付的事件。

在HTTP Long Polling中,在接收到客户端的请求后,服务器不会立即答复(“未立即答复”)。 它只是等待事件发生。 服务器可以等待多长时间甚至都没有定义。 这种机制在HTTP的工作范围内起作用,因此符合HTTP规范。