인프런 커뮤니티 질문&답변
Handler 질문 + 11분 질문
작성
·
300
0
강사님이 13분 쯤에 실행 하는 부분에서 똑같이 cmd창에
10명이 입장은되는데 클라에서 보낸 메세지를 서버가 받아서 BroadCast하는 부분이 계속 호출이 안되었었습니다.
거의 3시간동안 뭐가 문제지?? 하다가 찾은 부분이
Server > PacketHandler부분에서
C_chatHandler부분이
이렇게
ClientSession clientSession = new ClientSession(); 되어 있어서
if문에 걸려서 그냥 return 을 해버린거 같은데
인자에 받은 session을 new ClientSession()으로 하게되면
새로 "빈" 갓난아기의?? ClientSession을 다시 만들어 버리기때문에
ClientSession의 Room이 항상 비어있는 상태라
retrun 으로 끝내버리게 되어서
ServerSessionManager의 Register하는 부분에서
_onRecv를 한다음
어떤 행동을 할것인가 == _handler 부분에서 매핑해놓은
C_chatHandler가 호출 되기는 하지만
new ClientSession 때문에 if에 걸려서 바로 return 을 하게 되어서 클라에 뿌려줄 수가 없었다....
그래서 new ClientSession을 하면 안되고
여기서 이어서 받이온 session을 ClientSession으로 캐스팅을 하고
(안에 정보가 있으니까)
이어서 사용을 해야한다. 라고 이해를 했는데 어느정도 맞는 흐름일까요..??
퀴즈
다수 클라이언트의 동시 요청을 서버에서 즉시 처리할 때 주로 발생하는 문제점은 무엇일까요?
패킷 순서가 뒤바뀔 수 있습니다.
멀티스레딩 충돌 및 병목 현상이 발생할 수 있습니다.
클라이언트의 응답 속도가 느려집니다.
서버 메모리 사용량이 급증합니다.





