【发布时间】:2016-08-11 15:22:46
【问题描述】:
我正在尝试使用 Netty 测试 HTTP/2 推送承诺,但似乎不起作用。用例很简单:
- 请求主页/索引页面
- 索引页面依赖于
index.js文件,所以我想为index.js发送PUSH_PROMISE - 为
index页面写入和刷新内容。
这是我所做的:
int nextStreamId = encoder.connection().local().incrementAndGetNextStreamId();
String authority = request.headers().get("host");
Http2Headers pushHeaders = new DefaultHttp2Headers()
.method("GET")
.path("/assets/index.js")
.authority(authority)
.scheme("https");
encoder.writePushPromise(ctx, Integer.parseInt(streamId), nextStreamId, pushHeaders, 0, ctx.newPromise());
它成功地向浏览器发送了一个PUSH_PROMISE,但之后根本没有加载/assets/index.js 文件(浏览器无限期地等待响应)
这仅在我发送 PUSH_PROMISE 时发生,如果我删除这些行一切正常,并且两个文件 (HTML+js) 都可以通过 H2 正确提供。
完整的演示可用here(它使用自签名证书,因此您必须接受不安全警告)
PUSH_PROMISE的源代码是here。
我是不是做错了什么?
谢谢。
【问题讨论】:
-
感谢您在线发布代码!让它很容易理解和帮助!
标签: netty http2 push-promise