socket.io - dltmdrbtjd/HANG GitHub Wiki

socket.io

WebSocket๊ณผ ๊ฐ™์ด ์‹ค์‹œ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ƒํ˜ธ์ž‘์šฉ ์›น ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š” ํ‘œ์ค€ ๊ธฐ์ˆ ์€ WebSocket์ด๊ณ  socket.io๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹ค์‹œ๊ฐ„ ์›น ์„œ๋น„์Šค๋ฅผ ์†์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

socket.io๋Š” javascript๋ฅผ ์ด์šฉํ•ด ๊ตฌํ˜„ํ•˜๋ฉฐ ์„œ๋ฒ„ ๊ตฌํ˜„์ฒด๋„ Node.js ๋ฐ–์— ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค.


์„ค์น˜ํ•˜๊ธฐ

// React client
npm install socket.io-client

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

์„œ๋ฒ„์™€ ์—ฐ๊ฒฐํ•˜๊ธฐ

import io from 'socket.io-client';

const socket = io([์„œ๋ฒ„ ์ฃผ์†Œ]);

์œ„ ์ฝ”๋“œ๋กœ ์„œ๋ฒ„์˜ socket๊ณผ ์—ฐ๊ฒฐ๋˜๊ณ , ์„œ๋ฒ„์—์„œ connection ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ๋™ํ•ฉ๋‹ˆ๋‹ค.

socket.emit('join', {
  joiningUserPk: userPk,
  targetUserPk: targetPk,
  nickname,
});

ํด๋ผ์ด์–ธํŠธ์—์„œ join ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” join ์ด๋ผ๋Š” ์ด๋ฒคํŠธ๊ฐ€ on ๋œ๋‹ค๋ฉด ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ์•ฝ์†๋œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

socket.on('updateMessage', (data) => {
  chatLogState.setChatLogs((chatLog) => chatLog.concat(data));
});

์„œ๋ฒ„์—์„œ updateMessage๋ผ๋Š” ์ด๋ฒคํŠธ๊ฐ€ emit๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ฐ์ง€ํ•ด ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ตœ์ดˆ๋กœ ํ•œ๋ฒˆ on ์‹คํ–‰ ์‹œ socket์€ ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ ๊ณ„์† ๊ฐ์‹œํ•˜๊ฒŒ ๋˜๊ณ  ์„œ๋ฒ„์—์„œ updateMessage๋ผ๋Š” ์ด๋ฒคํŠธ๊ฐ€ emit ๋  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.


์ฐธ๊ณ 

WebSocket๊ณผ Socket.io

socket io์‚ฌ์šฉํ•˜๊ธฐ