본문 바로가기
프로그래밍/Node.js

[9] socket.io를 사용해서 클라이언트와 서버 연결하는 법 (with.express)

by 제이스톨 2023. 7. 5.
728x90

1. 들어가기 전에..

소켓이란 무엇인가..??

소켓 : 네트워크에서 데이터를 송수신하기 위해 반드시 거쳐야하는 연결부!

 

- TCP : 서버와 클라이언트 간 신뢰성 있는 데이터 송수신을 위해 만들어진 프로토콜 / 연결지향성 / 데이터를 양방향으로 주고 받을 수 있다 / 안정적 / 비용이 많이 든다 / 전송속도가 느리다

- UDP : 비연결성 프로토콜 / 신뢰도가 낮다 / TCP에 비해 비용이 적고 전송 속도가 빠르다

 

패킷 : 소켓을 통해 송수신하는 데이터 덩어리 하나가 한개의 패킷이라고 부른다


2. Socket.io

: 자바스크립트를 이용해서 웹소켓을 사용할 때 가장 많이 사용되는 라이브러리 ( but 웹소켓과 완전히 동일하지는 않다! )

 

2-1. socket.io 사용법

#1 아무 빈 폴더를 만든다.

 

#2 모듈을 설치해준다.

npm init -y
npm i socket.io -S

 

#3 index.html 파일을 생성해준다

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="https://cdn.socket.io/socket.io-3.0.1.min.js"></script>
    <title>Hello Socket.io!</title>
  </head>
  <body>
    <script>
      const socket = io("ws://localhost:3000");
      socket.on("connect", () => {
        socket.send("Hello!");
      });

      socket.on("message", (data) => {
        console.log(data);
      });
    </script>
  </body>
</html>

 

#4 app.js 파일 만들기

// app.js

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

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

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

 

#5 socket 연결 여부 확인하기

- 백엔드

: 터미널창에 node app.js를 치고 서버를 킨다 -> 크롬으로 index.html 파일을 끌어서 연다 -> 터미널 창에 "새로운 소켓이 연결됐어요!"라는 메세지가 출력되면 성공!

 

-프론트엔드

:  똑같이 서버를 킨다 -> 크롬으로 index.html 파일을 끌어서 연다. -> 개발자 도구를 연다 -> Network 탭을 누른다 -> 페이지를 새로고침한다 -> 아래 사진과 같이 빨간줄이 없으면 성공!


See you next time :)

728x90