목차
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 |