[TIL] Socket 23.07.06

이상훈·2023년 7월 9일
0

[내일배움캠프]

목록 보기
40/68

TCP vs UDP

TCPUDP
연결연결 필요연결 불 필요
신뢰성신뢰성, 손실된 데이터 재전송신뢰성 없음
데이터흐름혼잡도 제어없음
속도UDP에 비해 느림빠르다
적용 분야신뢰성 있는 실시간 통신속도 중시형 실시간 통신(스트리밍 비디오, 오디오)
적용 프로토콜FTP, HTTP, SMTPDNS,DHCP,SNMP

WebSocket vs socket.io

WebSocket은 사용자의 브라우저와 서버 사이의 동적인 양방향 연결 채널을 구성하는 HTML5 프로토콜이다. WebSocket API를 통해 서버로 메세지를 보내고 요청 없이 응답을 받아오는 것이 가능하다.
socket.io는 양방향 통신을 하기위해 WebSocket 기술을 활용하는 라이브러리이다. 자바스크립트로 치자면 jQuery와의 관계와 비슷하다고 할 수 있다. WebSocket을 사용할 수 없는 브라우저인 경우 서버에서 데이터를 일정 간격마다 받아오는 polling 기능으로 실시간 기능 구현을 가능하게 해준다.

WebSocket

  • HTML5 웹 표준 기술
  • 빠르게 작동하며 통신할 때 아주 적은 데이터를 이용
  • 이벤트를 단순히 듣고, 보내는 것만 가능

Socket.io

  • 표준 기술이 아니며, 라이브러리임
  • 소켓 연결 실패 시 fallback을 통해 다른 방식으로 알아서 해당 클라이언트와 연결을 시도함
  • 방 개념을 이용해 일부 클라이언트에게만 데이터를 전송하는 브로드캐스팅이 가능

-> 언제 WebSocket을 사용하고, 언제 socket.io를 사용해야할 지 기준을 정해야 한다.

socket.io 서버 연결예제

const io = require("socket.io")(3000, {
  cors: {
    origin: "*",
    methods: ["GET", "POST"],
  },
});

io.on("connection", (socket) => {
  console.log("새로운 소켓이 연결됐어요!");

  socket.on("message", (data) => {
    console.log(data);
  });
});

클라이언트 측 예제

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("서버가 요청을 받을 준비가 됐어요");
});

참고 블로그 : https://www.peterkimzz.com/websocket-vs-socket-io/
참고 블로그 : https://github.com/w-log/NodejsStudy/blob/master

profile
코린이

0개의 댓글