본문 바로가기
프로그래밍/Netty ChannelHandler

Netty ChannelHandler

by Flow.X 2022. 1. 10.
728x90

아마 Netty를 하면서 가장 많이 접하는것 중에 하나가 ChannelHandler일것이다. 

 

여기에 보면 

ChannelHandler는  I/O 이벤트를 핸들링 하고,  pipeline의 다음  handler에 전달하는 역활을 한다고 정의가 되어있다.

그리고 Encoder, Decoder, InboundHandler, OutboundHandler 부터 엄청 많다. 

한번씩 보고 눈에 살짝 익혀 놓으면 나중에 다른거 개발할때도 좋을것 같다 

 

그리고 좀더 편하게 쓰기위해서 Adapter class를 제공하고 있으며,

가장 많이 쓰는게 아래 세개 정도이다. 

 

ChannelInboundHandlerAdapter :  유입되는 데이터에 대한 I/O를 핸들링 한다.

ChannelOutboundHandlerAdapter : 유출되는 데이터에 대한 I/O를 핸들링 한다.

ChannelDuplexHandlerAdapter :  유출입 되는 데이터에 대한 I/O를 핸들링 한다.

 

pipeline에 위 Handler를 상속받아서 자신만의 수신모듈, 송신모듈을 만들어서 배치 시키면 하나의 프로그램이 완성된다. 

또 Encoder,Decoder도 적절히 배치해서 원하는 데이터를 만들어서 다음 단계로 보낼수도 있다.

 

ChannelHandlerContext

핸들러들은 ChannelHandlerContext를 제공하고 있고, 자기가 속한 pipeline과 서로 상호작용도 가능하다..

이 컨텍스를 통해 아래와 같은 일을 할 수가있다.

 

이벤트 전달 

- ChannelHandlerContext.fireChannelActive() ,ChannelHandlerContext.fireChannelInactive(), ChannelHandlerContext.fireChannelRead()..등

 

pipeline 변경

 

속성키 저장

 

ChannelInboundHandlerAdaptor

728x90