Socket.io: "ping" ๋ฐ/๋˜๋Š” "pong"์€ ์˜ˆ์•ฝ๋œ ์ด๋ฒคํŠธ์ž…๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2016๋…„ 01์›” 28์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: socketio/socket.io

์ด๋ฒคํŠธ ์ด๋ฆ„์ด ding ๋ฐ dong ์ผ ๋•Œ ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ ์ด๋ฒคํŠธ ์ด๋ฆ„์ด ping ๋ฐ pong ์ผ ๋•Œ ๋งค์šฐ ์ด์ƒํ•˜๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ์ฝ”๋“œ(์•„๋ž˜ ์ฐธ์กฐ)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ์ด๋ฆ„์ด ping ๋ฐ pong ์ผ ๋•Œ

  • ์„œ๋ฒ„ ์ฝ”๋“œ๋Š” "connect" ๋ฐ "disconnect" ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋กํ•˜์ง€๋งŒ "ping" ๋ฐ "pong" ๋ฉ”์‹œ์ง€๋Š” ๊ธฐ๋กํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ๋Š” "ping" ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์˜ค๋žœ ๊ธฐ๋‹ค๋ฆผ(10์ดˆ ์ด์ƒ) ํ›„์— "pong" ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ๊ณ„์† ๊ธฐ๋‹ค๋ฆฌ๋ฉด 10์ดˆ ์ด์ƒ ๊ฐ„๊ฒฉ์œผ๋กœ ๋” ๋งŽ์€ "pong" ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์ฝ”๋“œ

const fs             = require('fs');
const http           = require('http');
const path           = require('path');
const SocketIOServer = require('socket.io');

const app = new http.Server();
app.on('request', (req, res) => {

  const index = path.join(__dirname, 'public', 'index.html')

  fs.readFile(index, function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }

    res.writeHead(200);
    res.end(data);
  });
});
app.listen(3000, 'localhost');

const io = new SocketIOServer(app);


// could also use "connection"
io.on('connect', function (socket) {
  console.log(`${socket.id} "connect"`);

  socket.on('ping', (data) => {
    console.log('Receive "ping"');

    io.emit('pong', {});  
    console.log('Send "pong"');  
  });

  socket.on('disconnect', () => {
    console.log(`${socket.id} "disconnect"`);    
  });
});

ํด๋ผ์ด์–ธํŠธ ์ฝ”๋“œ

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Socket.IO Events</title>
  </head>
  <body>
    <h1>Socket.IO Events</h1>

    <script src="/socket.io/socket.io.js"></script>
    <script>
      const socket = io();

      socket.on('pong', (data) => {
        console.log('Receive "pong"');
      });

      socket.emit('ping', {});
      console.log('Send "ping"');

    </script>
  </body>
</html>

๋‚˜๋Š” ์—ฌ๊ธฐ์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ „ํ˜€ ๋ชจ๋ฅธ๋‹ค. ๋˜ํ•œ ์ด๊ฒƒ์€ #1951๊ณผ ๊ด€๋ จ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ 'ํ•‘' ์ด๋ฒคํŠธ์— ๊ฐ‡ํ˜”์Šต๋‹ˆ๋‹ค.
๊ณต์‹ ๋ฌธ์„œ ๊ฐ€ GitHub์˜ ๋ฌธ์„œ ์™€ ๋™๊ธฐํ™”๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?
์•„๋‹ˆ๋ฉด ์‚ฌ๋žŒ๋“ค์ด ๋‹ค์‹œ ๊ฐ‡ํžˆ์ง€ ์•Š๋„๋ก ์˜ˆ์•ฝ๋œ ์ด๋ฒคํŠธ ์ด๋ฆ„์„ ๋ฌธ์„œ์— ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ชจ๋“  4 ๋Œ“๊ธ€

'ping' / 'pong' ์ด๋ฒคํŠธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ์ด์ƒํ•œ ๋™์ž‘์ด ๋ณด์ž…๋‹ˆ๋‹ค. socket.io์— ping๊ณผ pong์œผ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋” ์กฐ์‚ฌํ•  ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์ด '๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋“œ๋ฆฝ'๊ณผ '๋“œ๋ฆฝ'

ping ๋ฐ pong ์ด๋ฒคํŠธ๋Š” socket.io-client์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
https://github.com/socketio/socket.io-client#events ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋ช‡ ์‹œ๊ฐ„ ๋™์•ˆ 'ํ•‘' ์ด๋ฒคํŠธ์— ๊ฐ‡ํ˜”์Šต๋‹ˆ๋‹ค.
๊ณต์‹ ๋ฌธ์„œ ๊ฐ€ GitHub์˜ ๋ฌธ์„œ ์™€ ๋™๊ธฐํ™”๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?
์•„๋‹ˆ๋ฉด ์‚ฌ๋žŒ๋“ค์ด ๋‹ค์‹œ ๊ฐ‡ํžˆ์ง€ ์•Š๋„๋ก ์˜ˆ์•ฝ๋œ ์ด๋ฒคํŠธ ์ด๋ฆ„์„ ๋ฌธ์„œ์— ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์‹œ๊ฐ„ ๋‚ญ๋น„์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘(socket.io ํŒ€ ํฌํ•จ)๋Š” ๊ฐ™์€ ๋‚˜์œ ์ƒ๊ฐ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ELSE๋Š” ๋ฌด์—‡์„ ์˜ˆ์•ฝํ•ฉ๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰