java - 如何在 CustomHandlers onDataRead 方法中检索主 ChannelID

标签 java netty

出于记录目的,我需要获取使用的监听器 ChannelID 并重写处理程序的 onDataRead 方法。

在入站日志中我看到了正确的 ID。 (见下文)。但是当我尝试像这样获取 id 时:

 public void onDataRead(ChannelHandlerContext ctx, Http2DataFrame data) throws Exception {
    if (data.isEndStream()) {
        System.out.println(ctx.channel().id());
}   }

这将打印另一个 ID,而不是下面我的日志中显示的 ID:

入站日志:

----------------INBOUND--------------------
[id: 0x73888d9b, L:/127.0.0.1:8080 - R:/127.0.0.1:6624] HEADERS: streamId=5, headers=DefaultHttp2Headers[:path: test/, :method: POST, :scheme: http, :authority: 127.0.0.1:8080, accept-encoding: gzip, accept-encoding: deflate], streamDependency=0, weight=16, exclusive=false, padding=0, endStream=false
------------------------------------

ChannelHandlerContext 中的 id 不同可能是什么原因?当入站日志中显示不同的 id 时?如何获得与入站日志中显示的相同的 id?

最佳答案

在阅读了几个小时的 javadoc 之后,我发现了以下方法来查找父 channel (及其 id)

ctx.channel().parent().id());

关于java - 如何在 CustomHandlers onDataRead 方法中检索主 ChannelID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36546635/

相关文章:

java - 重启安卓服务

java - Netty 5.0.0 closeFuture().sync() 从未完成

java - 从模板字符串中查找值

java - java httpssession的生命周期

java - JNI警告:Method called with exception pending

ssl - 使用 TLS 压缩的 Netty(不是 HTTP)?

java - Netty客户端向服务器发送保持 Activity 状态

java - 位置 : 5. 处的格式错误的 SQL92 字符串需要 "call"?

java - 如何将 netty Channel 对象存储在 Redis 数据库或任何其他解决方案中?

java - 为什么建议在 ChannelOutboundHandler 中仅使用带有 [byte] 操作的堆缓冲区?