HTTP는 클라이언트가 요청을 해야 서버에서 응답을 해주는 단방향
websocket은 양방향
HTTP는 비유하자면 문자메시지와 같다. 서버(소개팅녀)는 선톡을 하지 않는다. 서버는 클라이언트가 먼저 톡을 해야만 답장을 해준다. 이 한계를 극복하기 위해 websocket이 만들어졌다.
websocket은 비유하자면 전화와 같다. (클라가 서버에게 or 서버가 클라에게)
HTTP는 클라가 요청을하고 서버가 응답하는 순간 연결이 끊긴다. HTTP에서 채팅기능을 구현한다면 메시지가 왔는지 매번 새로고침을 눌러야 하는 번거로움이 생긴다.
websocket은 원하는 순간까지 클라와 서버의 연결을 유지시킬 수 있다. 그래서 매번 새로고침 하지 않아도 된다.
websocket은 실시간이 필요한 채팅, 주식, 게임 등에 자주 사용된다.
사용법
클라이언트가 websocket하자고 서버에게 HTTP요청을 하고 서버가 이를 받아주면 연결이 된다.
HTTP vs websocket
HTTP는 비유하자면 문자메시지와 같다. 서버(소개팅녀)는 선톡을 하지 않는다. 서버는 클라이언트가 먼저 톡을 해야만 답장을 해준다. 이 한계를 극복하기 위해 websocket이 만들어졌다. websocket은 비유하자면 전화와 같다. (클라가 서버에게 or 서버가 클라에게)
HTTP는 클라가 요청을하고 서버가 응답하는 순간 연결이 끊긴다. HTTP에서 채팅기능을 구현한다면 메시지가 왔는지 매번 새로고침을 눌러야 하는 번거로움이 생긴다. websocket은 원하는 순간까지 클라와 서버의 연결을 유지시킬 수 있다. 그래서 매번 새로고침 하지 않아도 된다.
websocket은 실시간이 필요한 채팅, 주식, 게임 등에 자주 사용된다.
사용법 클라이언트가 websocket하자고 서버에게 HTTP요청을 하고 서버가 이를 받아주면 연결이 된다.
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.4.1/socket.io.js"></script>
var socket = io.connect('http://' + document.domain + ':' + location.port);
[참고사항]
on 이벤트 수신 emit 이벤트 송신
이벤트명은 맘대로 개발자가 붙여줄 수 있음.
connect, disconnect 처럼 미리 정의된 이벤트도 있음.(connect는 websocket연결되는 순간 자동으로 발생하는 이벤트)
위 코드는 클라이언트에서 emit한 send_message라는 이벤트를 서버에서 수신하면 chat_history에 message를 집어넣은 후 message를 모든 클라이언트에게 receive_message라는 이벤트로 전달해주는 코드.