哟伙计们.在我的管道中有3个处理程序:
在ConnectionHandler中,我创建了一个Session对象.我只需要每个客户端有一个Session对象,这就是我在ConnectionHandler中初始化它的原因,因为channelActive方法每个客户端只调用一次.我希望将该会话传递给PacketHandler.我该怎么做?
Nor*_*rer 11
您可以使用Channel.attr(...).set(...)和Channel.attr(...).get(...)来获取此类内容.检查javadocs.
所以像这样:
public static AttibuteKey<String> MY_KEY = AttributeKey.valueOf("MY_KEY");
public final class ConnectHandler extends ChannelInboundHandlerAdapter {
@Override
public void channelActive(ChannelHanderContext ctx) {
ctx.channel().attr(MY_KEY).set("Whatever");
}
}
public final class NextHandler extends ChannelInboundHandlerAdapter {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
String value = ctx.channel().attr(MY_KEY).get();
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1436 次 |
| 最近记录: |