본문 바로가기

channelHandler4

Netty Pipeline 및 Codec 활용(1) 편의점을 예로 들어 설명했었는데, 이번엔 카페로 한번 해보자. ( 명퇴나 은퇴하면 내 꿈이다.. ) 손님이 문을 열고 들어온뒤 손님을 대응하는 메뉴얼에 대한 절차라고 언급했던 내용을 다시 보자 CodecSample.java import org.slf4j.Logger; import org.slf4j.LoggerFactory; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.EventLoopGroup; import io.n.. 2022. 1. 10.
Netty Pipeline 및 Codec 활용(3) 손님이 와서 주문을 하는데 주문이 끝날때는 카드를 내밀어야 한다. 주문이 끝나기도 전에 카드를 내밀면 무조건 결제하고, 추가주문을 받는다는 원칙을 세웠다고 하자. 그럼 고객은 항상 주문이 완료되면 카드를 내밀것이다. 그걸 캐치해서 다음 단계로 진행시키고, 이후 다시 주문받고 하면 되겠다. ChannelHandler 중 Netty 샘플에서 가장많이 쓰는것이 아래 두개이다 LineBasedFrameDecoder : 라인단위로 가져와서 처리 LengthFieldBasedFrameDecoder : 앞에다가 내가 보낼 사이즈는 얼마야 라고 먼저 보내고 이야기를 하는것 그 중 LineBasedFrameDecoder 를 써보자 우선 설명을 보면 받은 ByteBuf를 \n, \r\n으로 나눈다고 한다 함수에 커서를 두.. 2022. 1. 10.
Netty ChannelHandler 아마 Netty를 하면서 가장 많이 접하는것 중에 하나가 ChannelHandler일것이다. 여기에 보면 ChannelHandler는 I/O 이벤트를 핸들링 하고, pipeline의 다음 handler에 전달하는 역활을 한다고 정의가 되어있다. 그리고 Encoder, Decoder, InboundHandler, OutboundHandler 부터 엄청 많다. 한번씩 보고 눈에 살짝 익혀 놓으면 나중에 다른거 개발할때도 좋을것 같다 그리고 좀더 편하게 쓰기위해서 Adapter class를 제공하고 있으며, 가장 많이 쓰는게 아래 세개 정도이다. ChannelInboundHandlerAdapter : 유입되는 데이터에 대한 I/O를 핸들링 한다. ChannelOutboundHandlerAdapter : 유출되.. 2022. 1. 10.
Netty Pipeline 및 Codec 활용(2) 앞에서 말했던 pipeline을 좀더 조작해보자 여기서 해볼꺼는 ByteBuf 로 받는거를 String으로 변환하는 Codec을 추가해서 귀찮은 형변환을 간단하게 해보고 엔터키가 오면 그걸 잘라서 처리해보고자 한다. 데이터를 받을때 ByteBuf로 기본으로 받다보니 변환해서 사용해야했다 우선 CodeSampleHandler.java의 channelRead 코드를 보면 Object msg -> ByteBuf -> String으로 변환한 뒤 사용했다. @Override public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { String strRecv = ((ByteBuf) msg).toString(CharsetUtil.. 2022. 1. 7.