인프런 커뮤니티 질문&답변

KGinS님의 프로필 이미지
KGinS

작성한 질문수

Slack 클론 코딩[실시간 채팅 with React]

socket.io 에 대한 간단한 질문

작성

·

370

0

안녕하세요 선생님!

강의에서 사용한 socket.io에 대해 문득 궁금한 점이 들어 질문 남기게 되었습니다.

기존에 Websocket API 등장 이전에는 Ajax 통신 등으로 실시간 정보를 받아오기 위해 매번 요청을 보내야 했고,

그 과정에서 좀 더 효율성을 위해 Long Polling 또는 Streaming 방식 등이 등장했다고 이해했습니다.

반면 Websocket 의 경우 한 번 연결을 맺으면 그 연결을 유지하기 때문에 실시간 정보를 다루기 편하고 클라이언트와 서버간 양방향 통신 역시 용이하다고 소개된 것 같습니다,

이때 클라이언트와 서버 간의 통신은 등록한 이벤트 핸들러(?)를 통해 해당 이벤트가 감지되면 데이터를 내보내주는 등의 반응을 한다라고 이해했습니다.

여기서 드는 간단한 의문은

1) 클라이언트의 HTTP 요청 -> 서버가 수신 -> 서버에서 데이터 처리 -> 클라이언트에게 HTTP 응답 -> 연결 해제

2) 클라이언트에서 socket 연결 요청 -> 서버와 연결 -> 클라이언트에서 이벤트 발생 -> 서버가 감지 -> 서버에서 데이터 처리 후 전달 -> 다음 이벤트 대기...

와 같은 과정으로 이해가 되는데 HTTP요청이나 이벤트 발생 시 모두 서버에서 데이터를 처리해서 보내주는 로직은 동일한 것 같은데, 서버에서 매번 HTTP 요청을 받아 응답을 보내주는 것 보다 이벤트 핸들러(사실 이벤트가 맞는지는 확실히 모르겠습니다) 방식으로 처리하는 것이 효율이 더 좋은건가요? 

글을 작성하다 보니 내용이 좀 두서가 없는 것 같은데 질문의 요지는,
클라이언트에서 서버로 요청을 보내고 이에 서버가 데이터를 보내주는 것은 둘 모두 동일한 로직인 듯 한데 이 요청이 HTTP 요청인가 아닌가에 따라 서버에 걸리는 부하의 차이가 꽤 큰 것 인지 궁금합니다.

번외)
아 그리고 선생님이 사용하시는 에디터에서 주로 함수의 인자에 음영처리되어 자동으로 데이터 타입이 표시가 되던데,
이는 Webstorm 에디터만의 기능인가요? 아니면 VSCode에서도 이를 적용할 수 있는 Extension이 있을까요?

감사합니다.

답변 2

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

1.꽤 많이 차이납니다. 주기적으로 http 요청을 보낼 때는 데이터가 없어도 응답을 보내야하며 요청이나 응답을 보낼 때 쿠키나 헤더 등의 데이터도 포함되어 상당히 무거워집니다. 그리고 웹소켓보다 실시간성도 낮습니다.

2. 웹스톰 기능입니다. vs코드에서 가능한지는 잘 모르겠습니다.

KGinS님의 프로필 이미지
KGinS
질문자

감사합니다 :)

0

vscode extension:

Inline Parameters for VSCodev0.2.1

Liam Hammett

Function parameter annotations displaying inline in VSCode

를 사용하시면 됩니다.

KGinS님의 프로필 이미지
KGinS

작성한 질문수

질문하기