본문 바로가기

Netty21

01. Pipeline 테스트 간단히 하기(feat. EmbeddedChannel) - 1 Pipeline Netty에서 pipeline에는 channel Handler의 흐름을 기록하고 있다. 아래 코드를 보면 카페를 차리고 (Serverbootstrap), 문을 만들고, 카운터를 배치시키고 ( serverbootstrap.group(bossGroup, workGroup) ) 어떤말로 할지 결정하고 ( serverbootstrap.channel(NioServerSocketChannel.class) ) 그 다음에 손님이 왔을때 어떤 순서로 응대할지 정한 메뉴얼이 pipeline이다 LoggingHandler ▶ StringDecoder ▶ SampleClientHandler ▶ StringEncoder ▶ LoggingHandler 의 순서로 흐른다. serverbootstrap.handler.. 2022. 1. 7.
06. Discard Client 만들기 클라이언트를 만들다 보면 Netty가 정말 편한다는것을 알수 있다. 전체코드를 한번보고 서버와 다른점을 한번 더 보자 DiscardClient.java Server와 특별하게 다른점은 안보일것이다. 살짝 다른 부분만 보자. 아래 코드는 하나의 java에 클래스 두개 만들어서 사용했다 접속하자 마자 Say Hello... 만 보내주는 코드이다. 그 외 Handler가 동작하는 모습은 서버와 동일하다고 보면 된다. 이벤트도 동일한 순서대로 일어나는것을 볼수 있다 import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.config.Configurato.. 2022. 1. 7.
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.
02. EchoServer 응답값 바꿔보기 여기서는 첫 손님이 들어왔을때 환영인사와 손님이 말할때 다시 말해주는 부분을 추가해 보려 한다 - 접속시 환영 메시지를 추가해보자 - Echo 응답 시 응답메시지를 바꿔서 보내보겠다. ByteBuf로 전달되는 메시지를 Unpooled 함수를 사용해서 한번 조작해보자. Unpooled 와 Pooled 두가지가 있는데, 성능상으로는 Pooled 가 더 좋다고 한다. 1. 문 열고 들어왔을때 환영 메시지 고객이 문 열고 들어왔을때 아래 처럼 이벤트가 발생한다. 여기서는 channelActive 함수에다가 추가를 해보겠다. [main] INFO EchServer - 편의점 여는 중 .. [main] INFO EchServer - 편의점 열었음 .. [nioEventLoopGroup-3-1] INFO EchSer.. 2022. 1. 7.