Socket.io: рдХреНрдпрд╛ "рдкрд┐рдВрдЧ" рдФрд░/рдпрд╛ "рдкреЛрдВрдЧ" рдЖрд░рдХреНрд╖рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 28 рдЬрдире░ 2016  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: socketio/socket.io

рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдХреЛрдб рд╣реИ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдЬреЛ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдШрдЯрдирд╛рдУрдВ рдХреЛ рдбрд┐рдВрдЧ рдФрд░ рдбреЛрдВрдЧ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЬрдм рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкрд┐рдВрдЧ рдФрд░ рдкреЛрдВрдЧ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╡реЗ рдмрд╣реБрдд рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ

рдЬрдм рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкрд┐рдВрдЧ рдФрд░ рдкреЛрдВрдЧ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

  • рд╕рд░реНрд╡рд░ рдХреЛрдб "рдХрдиреЗрдХреНрдЯ" рдФрд░ "рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ" рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд▓реЙрдЧ рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди "рдкрд┐рдВрдЧ" рдФрд░ "рдкреЛрдВрдЧ" рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдирд╣реАрдВ
  • рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб "рдкрд┐рдВрдЧ" рд╕рдВрджреЗрд╢ рдХреЛ рд▓реЙрдЧ рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ рд▓рдВрдмреЗ рдЗрдВрддрдЬрд╛рд░ (10+ рд╕реЗрдХрдВрдб) рдХреЗ рдмрд╛рдж "рдкреЛрдВрдЧ" рд╕рдВрджреЗрд╢ рд▓реЙрдЧ рдХрд░реЗрдЧрд╛, рдФрд░ рдЕрдЧрд░ рдореИрдВ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд░рд╣рд╛ рддреЛ рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ 10+ рд╕реЗрдХрдВрдб рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдЕрдзрд┐рдХ "рдкреЛрдВрдЧ" рд╕рдВрджреЗрд╢ рдорд┐рд▓реЗрдЧрд╛

рд╕рд░реНрд╡рд░ рдХреЛрдб

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 . рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдмрд╕ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП 'рдкрд┐рдВрдЧ' рдЗрд╡реЗрдВрдЯ рдореЗрдВ рдлрдВрд╕ рдЧрдпрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЧрд┐рдЯрд╣рдм рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд╛рде рд╕рдордиреНрд╡рдпрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрд░рдХреНрд╖рд┐рдд рдШрдЯрдирд╛ рдХреЗ рдирд╛рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рдиреЛрдЯ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд▓реЛрдЧ рдлрд┐рд░ рд╕реЗ рдлрдВрд╕ рди рдЬрд╛рдПрдВ?

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ 'рдкрд┐рдВрдЧ'/'рдкреЛрдВрдЧ' рдИрд╡реЗрдВрдЯ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ - рд╕реЙрдХреЗрдЯ рдореЗрдВ рдХреЛрдб рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдЖрдИрдУ рдЬреЛ рдкрд┐рдВрдЧ рдФрд░ рдкреЛрдВрдЧ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рддрд╛ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ - рдирд╛рдо рдмрджрд▓рдХрд░ ' рдбреНрд░рд┐рдк' рдФрд░ 'рдбреНрд░реЙрдк'

ping рдФрд░ pong рдИрд╡реЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ socket.io-client рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рджреЗрдЦреЗрдВ https://github.com/socketio/socket.io-client#events

рдмрд╕ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП 'рдкрд┐рдВрдЧ' рдЗрд╡реЗрдВрдЯ рдореЗрдВ рдлрдВрд╕ рдЧрдпрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЧрд┐рдЯрд╣рдм рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд╛рде рд╕рдордиреНрд╡рдпрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрд░рдХреНрд╖рд┐рдд рдШрдЯрдирд╛ рдХреЗ рдирд╛рдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рдиреЛрдЯ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд▓реЛрдЧ рдлрд┐рд░ рд╕реЗ рдлрдВрд╕ рди рдЬрд╛рдПрдВ?

рдХреНрдпрд╛ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рд╣рдо рд╕рднреА (рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдЯреАрдо рд╕рдореЗрдд) рдХрд╛ рдПрдХ рд╣реА рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ред рддреЛ ELSE рдХреНрдпрд╛ рдЖрд░рдХреНрд╖рд┐рдд рд╣реИ?

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

distracteddev picture distracteddev  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

renkei picture renkei  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

samccone picture samccone  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Aweather picture Aweather  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gCurtisCT picture gCurtisCT  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ