Что произойдет, если клиент неправильно подключится к серверу Netty? - PullRequest
0 голосов
/ 20 декабря 2011

Допустим, у меня есть следующий декодер ...

public class MyDecoder extends FrameDecoder1 {

    @Override
    protected Object decode(
            ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer)2 {

        if (buffer.readableBytes() < 4) {
            return null;
        }

        return buffer.readBytes(4);
    }
}

Что произойдет, если клиент подключится и никогда не отправит 4 байта?

1 - Клиент подключится, отправит 3 байта, закрывает соединение.Netty отбрасывает все, что связано с этим соединением правильно, все ресурсы «освобождены»?

2 - Клиент подключается, отправляет 3 байта, не закрывает соединение и сохраняет его открытым.Другой клиент подключается и делает то же самое, и это продолжается.На данный момент ресурсы взяты правильно?Есть ли способ справиться с этим по умолчанию или мне нужно подключить обработчик тайм-аута чтения или что-то еще?

Спасибо

1 Ответ

1 голос
/ 21 декабря 2011

1) Да, как только канал закроется, он освободит буферизованные байты.2) Посмотрите на IdleStateHandler и IdleStateAwareHandler.Это поможет вам отключить клиента после некоторого бездействия.

...