netty: сохранить контекст обработчика канала для последующего использования - PullRequest
0 голосов
/ 07 января 2020

Я хотел бы сохранить входящий канал (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);
    }

Моя идея заключается в том, что я могу получить ctx из карты по строке и написать сообщение от другого класса, например:

channels.get("keyforchannel").writeAndFlush("here my message to this specific channel");

У кого-нибудь есть идеи, как мне этого добиться?

1 Ответ

1 голос
/ 07 января 2020

Netty предоставляет ChannelGroup для этой цели. Это не карта, а потокобезопасный набор для индексации активных каналов. Он имеет ряд полезных функций, таких как запись на все каналы в группе, фильтрация каналов, на которые вы хотите записать, с помощью ChannelMatcher и автоматическое извлечение каналов при их закрытии.

...