Node.js/Theory

[Node.js] Socket.io

ITs Min 2024. 5. 29.

๐Ÿ” ์†Œ์ผ“(Socket)

์†Œ์ผ“์€ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ด๋‹ค. Request๊ฐ€ ์žˆ์–ด์•ผ๋งŒ Response๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋Š” HTTP ํ”„๋กœํ† ์ฝœ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์†Œ์ผ“์€ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ฑฐ๋‚˜ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์†Œ์ผ“์€ TCP ๋˜๋Š” UDP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ†ต์‹ ํ•˜๋ฉฐ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.


๐Ÿ” WebSocket

WebSocket์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‹ค์‹œ๊ฐ„ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์ด๋‹ค. HTTP๋ฅผ ํ†ตํ•ด ์ดˆ๊ธฐ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•œ ํ›„, ๊ณ„์†ํ•ด์„œ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์„ ๊ฐ€๋Šฅ์ผ€ ํ•œ๋‹ค. WebSocket์€ HTTP์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ณ  ๋น ๋ฅธ ์†๋„์˜ ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์„ ์ œ๊ณตํ•œ๋‹ค.

const WebSocket = require('ws');

const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
    ws.send(message); // ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฐ์ดํ„ฐ ์ „์†ก
  });
});

๐Ÿ” Socket.io

Socket.io๋Š” WebSocket์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์‹ค์‹œ๊ฐ„ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. Socket.IO๋Š” WebSocket์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๊ณ , ๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ €์™€ ๊ธฐ๊ธฐ ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค. ๋˜ํ•œ, ์‹ค์‹œ๊ฐ„ ํ†ต์‹  ์™ธ์—๋„ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

[์„œ๋ฒ„]

const io = require('socket.io')(3000);

io.on('connection', (socket) => {
  console.log('a user connected');
  socket.on('chat message', (msg) => {
    io.emit('chat message', msg); // ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฉ”์‹œ์ง€ ์ „์†ก
  });
});

 

[ํด๋ผ์ด์–ธํŠธ]

<script src="/socket.io/socket.io.js"></script>
<script>
  const socket = io('http://localhost:3000');
  socket.on('chat message', function(msg) {
    console.log('message: ' + msg);
  });
</script>

 

'Node.js > Theory' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Node.js] Express ํ”„๋ ˆ์ž„์›Œํฌ  (0) 2024.05.24
[Node.js] Node.js์™€ ๊ธฐ๋ณธ ๋‚ด์žฅ ๋ชจ๋“ˆ  (0) 2024.05.24

๋Œ“๊ธ€

TOP

๋Šฆ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ๋• ๋„ˆ๋ฌด ๋Šฆ์€ ๊ฑฐ๋‹ค.