java - netty:保存 channel 处理程序上下文以供以后使用

标签 java netty

我想保存传入 channel (ctx) 供以后使用,就像在 HashMap 中一样。

    public void channelRead(ChannelHandlerContext ctx, Object msg) {
        ByteBuf in = (ByteBuf) msg;
        System.out.println("Server received: " + in.toString(CharsetUtil.UTF_8));
        // example channels.put("channelname", ctx);
    }

我的想法是,我可以通过字符串从 map 中获取 ctx 并从另一个类向其写入消息,如下所示:

channels.get("keyforchannel").writeAndFlush("这是我向该特定 channel 发送的消息");

有人知道我如何实现这一目标吗?

最佳答案

Netty 提供 ChannelGroup以此目的。 它不是一个映射,而是一个用于索引 Activity channel 的线程安全集。 它具有许多有用的功能,例如写入组中的所有 channel ,使用 ChannelMatcher 过滤要写入的 channel 。并在 channel 关闭时自动弹出 channel 。

关于java - netty:保存 channel 处理程序上下文以供以后使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59630980/

相关文章:

java - android 加载程序未显示在对话框中

java - tomcat 5 java.lang.UnsatisfiedLinkError : tomcat\apache-tomcat-5. 5.36\bin\tcnative-1.dll AMD 64 位平台上的 : Can't load IA 32-bit . dll

java - Netty ByteBuf处理,管道中的解码器结构

java - Netty 中的并发

java - Java 项目中使用 GRPC 和 GlassFish 的 Netty 问题

ssl - 无法初始化类 io.netty.handler.time out.IdleStateEvent

java - 为什么我要在 Response Servlet 中对私有(private)成员使用 session ?

java - 如何将 Scala 变量注入(inject) Scala 模板 HTML 中的 html 属性(字符串)

java - LinkedHashSet:hashCode() 和 equals() 匹配,但 contains() 不匹配

java - Netty 使用 TCP 给我一个错误的端口