HTTP/2 客户端 - 关联对请求的响应 - 可以依赖流 ID?

HTTP/2 client - associate response to request - can rely on stream id?

我正在尝试使用 netty 来实现 HTTP/2 客户端。在此 example(第 93 行)中,他们手动递增 streamId 并将其放入地图。当响应到来时,他们寻找 HttpConversionUtil.ExtensionHeaderNames.STREAM_ID header 参数,从而将响应与请求相关联。

我不喜欢自己增加 streamId 的想法。我能以某种方式获得 netty 将用于 writeAndFlush 请求的 ID 吗?

另外,创建一个新的流是否需要很多资源?或者它只是一个标识符?

我很确定,目前您无法让 Netty 生成和使用 streamId。另外,我也不喜欢自己增加 streamId 的想法,但看起来用当前的 API.

做这个是可以的

我检查了 Netty 源并发现了以下内容:

  1. HttpToHttp2ConnectionHandler用于写请求。它有私有方法 getStreamId,在 write 方法中用于获取 currentStreamId 的值。但是我们无权访问此变量。
  2. getStreamId 方法使用了另一个名为 incrementAndGetNextStreamId 的方法。因此,同样,我们只能递增并获取新的 streamId 值,但无法获取当前值。

这两个 类 都标有注解 @UnstableApi,所以也许将来会改变这种行为。

以下是一些相关链接:

  1. A little bit updated HTTP 2 client example from Netty repository.
  2. HTTP/2 Java Client Examples.
  3. .