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 源并发现了以下内容:
- HttpToHttp2ConnectionHandler用于写请求。它有私有方法
getStreamId
,在 write
方法中用于获取 currentStreamId
的值。但是我们无权访问此变量。
getStreamId
方法使用了另一个名为 incrementAndGetNextStreamId 的方法。因此,同样,我们只能递增并获取新的 streamId
值,但无法获取当前值。
这两个 类 都标有注解 @UnstableApi
,所以也许将来会改变这种行为。
以下是一些相关链接:
我正在尝试使用 netty
来实现 HTTP/2 客户端。在此 example(第 93 行)中,他们手动递增 streamId
并将其放入地图。当响应到来时,他们寻找 HttpConversionUtil.ExtensionHeaderNames.STREAM_ID
header 参数,从而将响应与请求相关联。
我不喜欢自己增加 streamId
的想法。我能以某种方式获得 netty 将用于 writeAndFlush
请求的 ID 吗?
另外,创建一个新的流是否需要很多资源?或者它只是一个标识符?
我很确定,目前您无法让 Netty 生成和使用 streamId
。另外,我也不喜欢自己增加 streamId
的想法,但看起来用当前的 API.
我检查了 Netty 源并发现了以下内容:
- HttpToHttp2ConnectionHandler用于写请求。它有私有方法
getStreamId
,在write
方法中用于获取currentStreamId
的值。但是我们无权访问此变量。 getStreamId
方法使用了另一个名为 incrementAndGetNextStreamId 的方法。因此,同样,我们只能递增并获取新的streamId
值,但无法获取当前值。
这两个 类 都标有注解 @UnstableApi
,所以也许将来会改变这种行为。
以下是一些相关链接: