다른 Netty 채널은 실제로 다른 상태 천이를합니다. 일반적으로
가능한 상태 전환은 TCP 기반 서버에 대한 채널은 다음과 같습니다
OPEN -> (BOUND -> UNBOUND)* -> CLOSE
당신은 업스트림 이벤트 중 하나를 처리하기 위해 파이프 라인에 에 해당하는 방법을 SimpleChannelHandler 서브 클래스를 사용하는 경우 이러한 상태 변경은 다음과 같습니다.
channelOpen
channelBound
channelUnbound
channelClose
서버 채널 CONNECTED 상태로 이동하십시오. 그들은 언 바운드 상태로 이동 일단
서버 채널은 거의 그러나이 YMMV 그래서 응용 프로그램에 의존하는 것으로 보인다, 다시 BOUND 상태로 이동합니다.
자식 채널이 열리거나 닫힐 때 서버 채널이 이벤트를 발생시킬 수 있습니다. 이러한 이벤트는 서버 채널이 BOUND 상태에있는 경우에만 발생할 수 있습니다. 이러한 이벤트는 다음 서버 채널 대신 상류 를 전송하는 경우 당신의 SimpleChannelHandler 서브 클래스에서 다음 방법이라고 : TCP 기반의 자녀와 클라이언트 채널 에 대한
childChannelOpen
childChannelClosed
가능한 상태 전환은 다음과 같습니다
OPEN -> (BOUND -> (CONNECTED -> DISCONNECTED)* -> UNBOUND)* -> CLOSE
이 제 연결된 상태로 이동하는 하지것 같습니다채널 코드 내에서 시행; 그러나이 상태는 채널이 CONNECTED 상태로 이동하기 전에 Netty 프레임 워크 내에서 항상 자식 채널과 클라이언트 채널 모두에 대해 이 먼저 실행됩니다.
당신이 SimpleChannelHandler 또는 그 파이프 라인의 서브 클래스를 사용하는 경우에 해당하는 방법은 다음과 같습니다
channelOpen
channelBound
channelConnected
channelDisconnected
channelUnbound
channelClose
는 TCP 기반 채널 아무것도 읽거나되기 전에 하게 연결 상태에 있어야합니다 채널에 쓰여졌습니다. 여기에는 결코 서버 채널을 읽을 수 없거나 쓸 수없는 서버 채널 이 포함되어 있습니다. 이는 서버 채널이 항상 서버 대신에 연결 작업을 관리하는 데에만 사용되므로 놀라 울 정도는 아닙니다.
데이터 그램 소켓은 읽고 실제로 (데이터 그램 소켓을 연결하는 보안 검사를 피하기 으로 빠를 수 있지만) 연결 을하지 않고 데이터를 기록하는 데 사용할 수 에서 TCP 기반 소켓 다르게 작동합니다. 데이터 그램 소켓은 위에서 설명한 TCP 기반 하위 및 서버 채널에 대해 나열된 상태 전 환 모두를 사용하여 을 효과적으로 사용할 수 있습니다.
감사합니다. 감사합니다. 일부 TCP 기사 나 netty 소스를 기반으로 한 것입니까? – yetanothercoder
그리고 질문 : 클라이언트가 원격 피어에 대해 수행하는 활성 연결 수를 계산해야하는 경우'channelConnected '를 증가시키고'channelDisconnected'를 감소시키는 것으로 충분합니까? 'keep-alive' 연결 및 다른 기능의 경우 카운터가 정확합니까? 감사! – yetanothercoder
자세한 내용은 출처를 읽었습니다. 다른 사람들이 비슷한 질문을하는 경우를 대비해 다른 사람을 구할 것이라고 생각했습니다. WRT 활성화 된 연결 수이면,'channelConnected'에서 카운터를 증가시키고'channelDisconnected'에서 카운터를 감소시키는 것으로 충분합니다. HTTP keep-alive 및 유사 프로토콜 온 TCP 구성은 응용 프로그램이 소켓 연결을 제어함에 따라 간접적으로 Netty에 영향을 미치지 않습니다. –