나처럼 초보자고 질문이 많다면.. 소스에 대한 기본 구조와 이해가 필요하다고 생각해 정리해봤다.
이벤트 핸들러 == 데이터 핸들러
채널 == 소켓
Client,Server채널
클라이언트(+클라이언트 핸들러) -------요청-------> 서버(+서버 핸들러) -------응답-------> 클라이언트
BootStrap: 프로그램에 대한 설정 및 수행할 동작 지정.
해당클래스: EchoServer, EchoClient
설정
- 이벤트루프: 스레드 모델 구현- 소캣채널에서 발생한 이벤트 처리
- 채널전송모드: 블로킹/논블로킹/epoll 설정
- 채널파이프라인: Handler 지정. 핸들러로 연결해주는 통로 함수(pipleline()).
** Server쪽에 접속 port 지정해야 하는 이유로 2개로 나눠짐
- ServerBootstrap: Server 부트스트랩
- Bootstrap: Client 부트스트랩
ChannelHandler: 데이터 처리 로직.
- 다양한 이벤트들이 있다
- 해당클래스: EchoServerHandler, EchoClientHandler
> - Inbound Event: 연결 상대방이 어떤 동작을 취했을 때 발생.
> - Outbound Event: 프로그래머가 요청한 동작에 해당하는 이벤트
> - ChannelHandlerContext: 채널에 대한 입출력 처리, 채널 파이프라인에 대한 상호작용을 도와주는 인터페이스.
클라이언트와 핸들러를 연결해주는 통로==pipeline();