ref : 코딩애플 채널,
https://www.youtube.com/watch?v=yXPCg5eupGM&ab_channel=%EC%BD%94%EB%94%A9%EC%95%A0%ED%94%8C
https://choseongho93.tistory.com/266
지나가다가 유튜브에서 웹소켓 개념을 설명해둔 영상이 있는데 겸겸 정리하려고 포스팅
서버랑 유저가 데이터를 주고 받고 싶을 때 http 요청을 주로한다.
유저가 서버한테 데이터 달라고 요청을 하면
서버가 데이터를 보내주는 방식이다.
문자 같은거임. 서버가 유저한테 답장으로 데이터를 보내는 거!
근데 서버가 선톡(먼저 보내는)하는 경우는 없다.
요즘은 실시간 채팅도 하고 주식거래도 하고 다양해졌는데
1초바다 서버에 있는 코인가격을 가져오려면
서버한테 2초마다 요청을 날려야할거다 -> 비효율적이다!
이럴땐 두가지 해결책이 있다
1. Server-Sent Event
2. WebSocket
첫번째 방법은 http 통신을 종료하지 않고 계속 유지하는거다.
이렇게 업그레이드 하면 서버가 능동적으로 보내줄거다
하지만 이건 좀 일방적이다.(라디오처럼 유저는 지속적인 데이터 수신만 가능)
그래서 두번째 해결책인 웹소켓을 이용한다
양방향 통신이 가능해진다.(전화처럼!)
작동원리
서버와 클라이언트 간의 웹소켓 연결은 http 프로토콜을 통해 이루어진다.
연결이 정상적으로 이루어 지면 서버와 클라이언트 사이에 웹소켓 연결이 이루어지고
일정시간이 지나면 자동으로 http 연결은 끊어진다.
문제점
구현이 생각보다 복잡하다고 한다.
서버와 클라이언트 간의 소켓 연결을 유지하는것 자체가 비용이 든다(cpu에 부담갈수있음)
어디에 쓰이나?
화상 채팅 app
위치기반 app
증권 거래 정보 사이트 및 app
구글 doc 처럼 여러명이 동시접속해서 수정하는 툴(요거 신기하다)
보니까 노드에 이를 구현하기 위한 적합한 모듈인 socket.io라는 걸 제공한다고 한다
여기 보니까 이분은 채팅을 구현하는 것도 만드신 것 같다
완전 해보고 싶다
nodejs 해보다가 따라만들어봐야지