2022/12/24 3

221224 socket.io / emit

WebSocket을 사용하면 원하는 방식으로 특정 이벤트에 따른 값을 전달하거나 전달받기 어렵다. 그래서 socket.io같은 웹소켓 라이브러리를 사용한다. socket.io에는 emit이라는 것이 있는데, 이는 서버나 클라이언트 각 어느곳에서라도 원하는 이벤트명으로 특정 인자를 전달 할 수 있다. 값 뿐만 아니라 객체, 함수 등을 보낼 수 있다. 함수를 보낼 때는 서버에서 함수를 실행하는 것이아닌, 함수 실행 버튼을 보낸다고 생각하면된다. 서버단에서 함수실행버튼을 눌러 클라이언트에 실행하는 정보를 넘기고 클라이언트에서 해당 함수를 실행하는 것이다. 클라이언트에서 보낸 함수를 서버에서 직접 실행하면 심각한 보안상의 문제가 발생할 수 있다고 한다. socket.emit('enter_room', input...

221224 웹소켓

소켓통신이란? 소켓이란 두 프로그램이 서로 데이터를 주고 받을 수 있도록 양쪽에 생선되는 통신 단자이다. 소켓통신이란 서버와 클라이언트 둘이 양방향으로 연결이 이루어지는 통신으로, 클라이언트의 요청이 없더라도 서버가 클라이언트로 요청을 보낼 수 있는 통신이다. 보통 스트리밍이나 실시칸 채팅 등 실시간으로 데이터를 주고 받아야 하는 경우 connection을 자주 맺고 끊는 HTTP통신보다 소켓 통신이 적합하다. 소켓 통신은 계속 연결이 되어있기 때문에 HTTP통신에 비해 많은 리소스가 소모된다. 리액트에서는 socket.io-client나 stamp 등의 패키지를 사용한다.

221224 HTTP통신

HTTP란? 기존에 사용하던 HTTP통신은 클라이언트에서 서버로 요청을 보내면 서버가 응답하는 방식으로 통신이 이루어진다. 응답에는 클라이언트의 요청에 따른 결과를 반환한다. 클라이언트의 요청이 있을 때만 응답이 가능하여 단방향 통신이다. 응답을 받은 후 연결이 끊어지는 것이 보통이지만, 성능 상 필요하다면 Keep Alive옵션을 주어 일정시간동안 연결을 유지하는 것이 가능하다.