네티는 이벤트를 인바운드 이벤트와 아웃 바운드 이벤트로 구분한 추상화 모델을 제공한다.
네트워크 송수신을 추상화하기 위하여 이벤트 모델 정의함.
데이터 송신을 아웃바운드 이벤트 , 테이터 수신을 인바운드 이벤트로 정의.
인바운드와 아웃 바운드 이벤트는 프로그램을 기준으로 생성된다.
서버/클라이언트 입장에서의 데이터 이동 방향성
Client ---------------------------------------------------------------------Server
Outbound -----> Send (몇시에요?) ----------> Inbound
Inbound <–--- (오후 8시)Response <---------- Outbound
ServerBootstrap 을 이용하여 Netty 구동
ServerBootstrap
.channel(NioServerSocketChannel.class) // 클라이언트 애플리케이션이 생성하는 채널의 종류 설정 NIO
.childHandler(new ChannelInitializer<SocketChannel>(){
public void init(SocketChannel ch) {
ChannelPipeline p = ch.pipeline()
p.addLast(new EchoServerHandler()) // 지정된 핸들러로 수신된 데이터 컨트롤
}
})
상속 구조
ChannelInboundHandlerAdapter ← SimpleChannelInbundHandlerAdapter
↑
EchoServerHandler
ChannelInboundHandlerAdapter
Server 입장
channelRead () : 데이터 수신 이벤트 처리 메서드, 클라이언트로 부터 데이터 수신이 이루어진 경우 네티가 자동으로 호출하는 메소드
channelReadComplate() : channelRead 이벤트 처리가 완료된 후 자동으로 수행되는 이벤트 메서드로, 채널 파이프라인에 저장된 버퍼를 전송하는 flush 메서드를 호출.
Client 입장
channelActive (): 소켓채널이 최초활성화 되었을때 발생되는 이벤트
channelReadComplate() : 수신된 데이터를 모두 읽은후 서버와 연결된 채널을 닫는다. 이후 데이터 송수신 채널은 닫히게 되고 클라이언트 프로그램은 종료.
exceptionCaught()
'Netty' 카테고리의 다른 글
Netty EventLoop / ChannelPipeLine 모델 (0) | 2018.06.27 |
---|---|
Netty 중요 개념 / Serverbootstrab 설정 (0) | 2018.04.02 |