본문 바로가기
NodeJS

웹소켓

by 개발자doc 2024. 6. 30.
목차
1. 웹소켓은?
2. 헤더의 내용
3. 사용하는 법
1. 웹소켓은?
  • 클라이언트와 서버 간의 연결을 유지하여 실시간 통신을 가능하게 하는 프로토콜

웹 개발에서 핫한 기능으로 기존 HTTP 특징을 잘 이용한 REST FUL과는 조금 다르게 소켓을 통해 지속적으로 연결을 통해 다수의 클라이언트와 실시간 통신 방식을 사용한다. 따라서 실시간으로 처리가 필요한 데이터 처리나 채팅같은 서비스에 이용된다.

2. 헤더의 내용

웹 소켓의 통신은 일반요청에 웹 소켓의 정보를 포함되어 서버에 전송된다. 서버는 헤더를 확인하여 웹소켓을 사용한 통신이 이루어질 수 있도록 한다.

3. 사용하는 법

1) 웹 소켓 서버 만들기 

// 1. ws라이브러리 사용 
const WebSocket = require('ws');
const server = new WebSocket.Server({port : '사용할 포트 번호' });

// 2. socket.io 라이브러리 사용
const express =require("express");
const app = express();

const server = app.listen(port,()=>{
    // 서버 실행시 실행된 코드
});

 

2) 이벤트 발생할 때

server.on("connection",socket=>{
    // 서버에 연결됐을 때 실행할 코드
    socket.on("이벤트명",매개변수1, 매개변수2);
})

서버에 연결이 되었을 때 각 소켓에 따라 다른 이벤트가 발생했을 때도 처리가 가능하다. 

 

3) 이벤트 발생

// 연결된 모든 클라이언트에게 이벤트 발생
socket.emit("이벤트명",인자값1,인자값2);

// 특정 클라이언트에게만 이벤트 발생
socket.to("특정 클라이언트의 id").emit("이벤트명",인자값1,인자값2);

등록된 이벤트를 emit메서드를 이용하여 발생시킨다.

특정 클라이언트의 id는 socket 객체의 속성 중 하나로 각 클라이언트가 겹치지 않도록 해시값으로 이루어진 값으로 하나의 클라이언트 또는 특정 그룹게만 이벤트가 발생할 수 있도록 할 수 있다.

socket.id -=> vkDRp4Q1C5ipBNS5AAAB

'NodeJS' 카테고리의 다른 글

Sequelize  (1) 2024.06.29
JWT로 권한 인증하기  (1) 2024.06.23
내 비밀번호 나도 모르게 만드는 법 bcrypt  (0) 2024.06.22
cors  (0) 2024.06.21
form태그로 REST FUL 가능할까?  (0) 2024.06.15