오늘부터 주특기 프로젝트 클론코딩 시작이다.
우리 조는 페이스북 클론 코딩을 선택했는데 이번에 웹 소켓과 멀터를 적용해보기로 했다.
웹 소켓은 클라이언트와 서버간에 양방향 통신을 제공하기 위한 개념이다.
node.js 심화주차에서 강의를 듣기는 했지만 한번 훑고 지나간 개념이라 머리에 남아있지않다.
그래서 다시 한번 정리해보려고 한다.
TCP (Transmission Control Protocol)
- 서버와 클라이언트간에 신뢰성 있는 데이터 송수신을 위해 만들어진 연결 지향성 프로토콜이다.
- 데이터를 나눠 보낼 수 있으며 받는 쪽에서 재조립한다.
- 만약 누락된 데이터가 존재하면 다시 요청해서 받아와 완전한 데이터를 만든다.
- 데이터의 순서가 바뀌지 않아 안정적이고 신뢰성이 높다.
- UDP보다 전송 속도가 느리고 비용 부담이 크다.
UDP (User Datagram Protocol)
- TCP와 달리 비연결성 프로토콜이다.
- 송수신한 데이터를 확인하지 않아 비교적 신뢰도가 낮습니다.
- 순서대로 데이터를 보내도 받는 쪽에서 다른 순서로 받을 수 있다.
- TCP보다 전송 속도가 빠르고 비용 부담이 적다.
소켓의 역할
우리가 네트워크에서 데이터를 송수신하기 위해 반드시 거쳐야 하는 연결부에 해당한다.
소켓의 종류
- 대표적으로 TCP와 UDP가 있다.
- 안정적인 데이터 송수신을 원한다면 TCP를 사용하고
일부 데이터가 손실되어도 괜찮거나 빠른 전송 속도가 필요할 경우 UDP를 사용한다.
패킷이란?
소켓을 통해 송수신하는 데이터 덩어리 하나를 한개의 패킷이라고 한다.
웹 소켓이란?
실시간 웹 서비스를 제공하기 위해 만들어진 소켓이다.
일반적으로 웹 소켓은 통신의 신뢰성을 보장하기 위해 TCP 방식을 사용한다.
우리가 사용할 Socket.io는?
자바스크립트에서 웹 소켓을 사용하기 원한다면 가장 많이 사용되는 라이브러리이다.
그러나 이 라이브러리는 순수한 웹소켓 기술만 이용한 라이브러리는 아니다.
아직 모든 브라우저에서 웹 소켓 기술이 동작하는 것이 아니기 때문에
웹 소켓을 사용할 수 없는 브라우저의 경우 서버에서 데이터를 일정 간격마다 받아오는
polling 기능으로 실시간 기능 구현을 가능하게 해준다.
socket.io 모듈 설치
npm i socket.io -S
express에 socket.io 모듈 붙이기
const express = require("express");
const { createServer } = require("http");
const app = express();
const http = createServer(app);
const io = require('socket.io')(http, {
cors: {
origin: "*",
methods: ["GET", "POST"],
},
});
http.listen(3000, () => {
console.log("서버가 요청을 받을 준비가 됐어요");
});
app 객체는 express로 기존처럼 API를 개발하거나 프론트엔드 파일을 서빙하는 용도로 사용할 수 있고, io 객체도 기존처럼 클라이언트와 데이터를 주고 받는 용도로 사용이 가능하다.
'Development > TIL' 카테고리의 다른 글
multer multiple 적용 (0) | 2023.05.16 |
---|---|
multer (0) | 2023.05.14 |
주특기 토이프로젝트 회고 (0) | 2023.05.11 |
npm run build (feat. CORS 에러 패배) (0) | 2023.05.11 |
CORS를 만나다(feat. 404 NOT FOUND) (0) | 2023.05.10 |