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 ๋ ๋๋ง๋ค ํด๋น ์ฝ๋๋ฅผ ์ํํฉ๋๋ค.