在请求的内容已经送达之后,是否可以将内容推送到客户端?
这篇维基百科文章解释了帧的顺序如下:
例如,我想知道是否可以在发送index.html的数据帧,然后发送PUSH_PROMISE帧之后,保持流3的打开状态。
(谢谢你的答复:)
发布于 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。
https://stackoverflow.com/questions/47291791
复制相似问题