다수의 클라이언트가 동시에 서버로 연결되는 것을 볼 수 있다. 지원되는 클라이언트의 수는 이론상으로 이용 가능한 시스템 리소스의 양과 JDK 버전에 따른 제약 조건에 의해서만 제한된다.
모든 네티 서버에는 다음 항목이 필요하다.
하나 이상의 ChannelHandler
이 컴포넌트는 클라이언트로부터 받은 데이터를 서버측에서 처리하는 비즈니스 논리를 구현한다.
부트스트랩
서버를 구성하는 시동 코드를 의미한다. 최소한 서버가 연결 요청을 수신하는 포트를 서버와 바인딩하는 코드가 있어야 한다.
Echo서버는 들어오는 메시지에 반응해야 하므로 인바운드 이벤트에 반응하는 메서드가 정의된 ChannelInboundHandler 인터페이스를 구현해야 한다. 이 애플리케이션은 소수의 메서드를 이용하는 간단한 애플리케이션으로 ChannelInboundHandler의 기본 구현을 제공하는 ChannelInboundHandlerAdapter의 하위 클래스를 만드는 것으로 충분하다.
관심을 가질메서드는 다음과 같다.
모든 Channel에는 ChannelHandler 인스턴스의 체인을 포함하는 ChannelPipeline이 연결되어 있다.
기본적으로 핸들러는 체인상의 다음 항목으로 핸들러 메서드의 호출을 전달한다. 즉 체인의 어디에서도 exceptionCaught()이 구현되지 않은 경우 수신된 예외가 ChannelPipeline의 끝까지 이동한 후 로깅된다.
따라서 애플리케이션에서 exceptionCaught()를 구현하는 ChanelHandler를 하나 이상 제공하는 것이 바람직하다.
Echo 클라이언트는 다음과 같은 일을 한다.