1. 어떤 핸들러와 조건을 설정할 것인가?
핸들러
핸들러 ID | 작업 |
10 | 소문자를대문자로 변경 |
11 | 데이터를 역순으로 변경 |
제한 조건
- 메시지의 크기가 1024 바이트 보다 큰 경우에는 에러 반환 이후 커넥션 해제
2. 제한된 크기를 설정해줬기 때문에 Server에서 Client가 범위 내 메시지 보냈는지 확인하기
먼저, constant.js에서
위와 같이 메시지 제한 크기를 작성해줍니다.
수정된 이후 :
그리고, server.js에서는
으로 Client가 보내는 데이터를 수신 하는 부분이 존재하는데
이 골백 함수 내부에 현재
으로 해더에서 메시지의 길이 정보를 가져올 수 가져올 수 있습니다.
그래서, if 문으로 length > MAX_MESSAGE_LENGTH로
Client가 보낸 Message가 제한된 길이 보다 클 경우
서버에서 Error 발생했다고 출력하고, Error를 Client에게 전송해줍니다.
그리고, socket.end()로 Client와의 연결을 종료시킵니다.
client에서 일부러 오류가 날 메시지를 보내면
서버에서 Error를 출력하고 통신을 종료시키기 때문에,
Client에서는
Server가 보낸 메시지가 너무 길다는 답변과 연결이 종료되는 것을 확인할 수 있습니다.
3. handlerId에 따른 Event 처리 구간 만들기
1) handler10은 소문자를 대문자로 변경하는 함수 입니다.
handerId에 따른 Event가 다른 함수에서 처리하게 하기 위해
최상위 폴더에서 handlers 폴더를 만들고 handler10.js를 만들어
위와 같은 내용을 추가해줍니다.
handler10번은
그리고, index.js에
const handlers 객체를 생성해 handler10번을 등록해줍니다.
등록한 handler에 따른 처리를 서버가 하기 위해 server.js에서
메서드에 handlerId 유무를 확인하는 코드를 작성해줍니다.
!handlers[handlerId]로
handlers객체에 handlerId가 존재하지 않으면
오류를 서버에 띄우고, 클라이언트에게 응답으로 보냅니다.
그리고, 통신을 종료합니다.
만약, Client가 없는 HandlerId로 Server에 message를 보내면,
Server에서는 Handler 11 번을 찾을 수 없다는 에러 메시지와,
Client는 Server가 응답한 오류 메시지 및 연결이 종료됩니다.
만약, 실제로 handler가 존재한다면, 해당 handler로 이밴트를 처리하기 위해
기존의
을
으로 수정해줍니다.
정상 동작을 확인하기 위해 Clinet가 Server로
를 보내는 상황으로 하겠습니다.
보는 결과와 같이, Client가 Server에게 "Hello"를 보낼 경우 서버는 "Hello"를 수신하고
Server는 수신한 결과 Hander Id가 10번인 함수로 Client의 message를 수신해 처리하여
"HELLO"가 출력되는 걸 확인할 수 있습니다.
2) handler11은 데이터를 역순으로 변경하는 Event 입니다.
handlers 폴더에 handler11.js를 만들어줍니다. 그리고,
(캬~ 정답 안 보고 구현했는데 튜터님이랑 똑같은 코드!!! (뿌듯))
위와 같이 Buffer 형태로 온 배열을 문자열로 바꾸고 단어 하나하나를 나눠 배열 형태로 만든 후,
배열을 뒤집어 줍니다. 그 후, 뒤집은 배열을 join('')으로 문자열로 다시 만들어 준 후
Buffer에 담아 배열 형태로 만들어줍니다.
결과를 출력해보면,
'Node 강의 > 심화' 카테고리의 다른 글
(중요) 자바스크립트 클라이언트에서 json 타입 형식 가져오는 방법 (0) | 2024.09.30 |
---|---|
1-9 게임 클라이언트 구현하기 (점프 게임) (0) | 2024.09.29 |
1-8 이벤트 핸들러 ( 점프 게임 ) (0) | 2024.09.27 |
1-7 커넥션 핸들러 ( 점프 게임 ) (0) | 2024.09.27 |
1-6 유저 접속 관리 ( 점프 게임 ) (0) | 2024.09.27 |