是否有与http相关的规范,可以帮助我实现“等待文件创建”?
这是应该执行的:
我知道我可以使用websockets和自定义方法来实现此目的。
但是在采用这种方式之前,我想知道是否存在涉及此用例的http相关规范。
答案 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规范。