首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTP2推送服务内容

HTTP2推送服务内容
EN

Stack Overflow用户
提问于 2017-11-14 17:24:29
回答 1查看 60关注 0票数 0

在请求的内容已经送达之后,是否可以将内容推送到客户端?

这篇维基百科文章解释了帧的顺序如下:

  1. 服务器在流3中接收请求index.html的头帧.
  2. 服务器发送用于styles.css的styles.css和用于script.js的PUSH_PROMISE,同样在流3中.
  3. 服务器在流3中发送一个头帧,以响应对index.html的请求。
  4. 服务器发送包含index.html内容的数据帧,该数据帧仍在流3中。
  5. 服务器将响应的头帧发送到流4中的styles.css。
  6. 服务器将响应的头帧发送到流6中的script.js。
  7. 服务器使用styles.css和script.js各自的流号为其内容发送数据帧。

例如,我想知道是否可以在发送index.html的数据帧,然后发送PUSH_PROMISE帧之后,保持流3的打开状态。

(谢谢你的答复:)

EN

回答 1

Stack Overflow用户

发布于 2017-11-16 04:42:27

在请求的内容已经送达之后,是否可以将内容推送到客户端?

我相信答案是否定的,基于6.6。PUSH_PROMISE在RFC 7540中。以下是相关的引文(重点是我的):

PUSH_PROMISE帧只能发送到由对等端发起的流,即处于“打开”或“半封闭(远程)”状态的。PUSH_PROMISE帧的流标识符指示与其关联的流。如果流标识符字段指定值0x0,则收件人必须响应类型为PROTOCOL_ERROR的连接错误(第5.4.1节)。

回到你的问题:

例如,我想知道是否可以在发送index.html的数据帧,然后发送PUSH_PROMISE帧之后,保持流3的打开状态。

我相信您可以这样做:您可以为流3发送所有DATA帧,但保留END_STREAM标志,从而保留(这意味着客户机仍然在等待内容)。然后发送PUSH_PROMISE,然后发送一个空的(零长度) DATA帧,并在流3上设置END_STREAM

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47291791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档