我正在尝试使用 Netty 测试 HTTP/2 推送承诺,但似乎不起作用。用例很简单:
- 请求主页/索引页面
- 索引页面取决于一个
index.js
文件,所以我想发送PUSH_PROMISE
一个index.js
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
.
此处提供了完整的演示(它使用自签名证书,因此您必须接受不安全警告)
的源代码PUSH_PROMISE
在这里。
难道我做错了什么?
谢谢。