TCP | UDP | |
---|---|---|
연결 | 연결 필요 | 연결 불 필요 |
신뢰성 | 신뢰성, 손실된 데이터 재전송 | 신뢰성 없음 |
데이터흐름 | 혼잡도 제어 | 없음 |
속도 | UDP에 비해 느림 | 빠르다 |
적용 분야 | 신뢰성 있는 실시간 통신 | 속도 중시형 실시간 통신(스트리밍 비디오, 오디오) |
적용 프로토콜 | FTP, HTTP, SMTP | DNS,DHCP,SNMP |
WebSocket은 사용자의 브라우저와 서버 사이의 동적인 양방향 연결 채널을 구성하는 HTML5 프로토콜이다. WebSocket API를 통해 서버로 메세지를 보내고 요청 없이 응답을 받아오는 것이 가능하다.
socket.io는 양방향 통신을 하기위해 WebSocket 기술을 활용하는 라이브러리이다. 자바스크립트로 치자면 jQuery와의 관계와 비슷하다고 할 수 있다. WebSocket을 사용할 수 없는 브라우저인 경우 서버에서 데이터를 일정 간격마다 받아오는 polling 기능으로 실시간 기능 구현을 가능하게 해준다.
WebSocket
Socket.io
-> 언제 WebSocket을 사용하고, 언제 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