рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдФрд░ рд╕реЙрдХреЗрдЯ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░



рд╢реБрдн рджрд┐рди, рджреЛрд╕реНрддреЛрдВ!

рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕ рдФрд░ рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рд╢рд╛рдпрдж рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╕рдВрдЪрд╛рд░ рдХреЗ рджреЛ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рдзрди рд╣реИрдВ (рдЗрд╕рдХреЗ рдмрд╛рдж рд▓рд╛рдЗрд╡ рд╕рдВрдЪрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд)ред рд▓реЗрдХрд┐рди рд╡реЗ рдХреИрд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ?

рд▓рд╛рдЗрд╡ рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рдПрдХ рд╕рдордп рдЖрддрд╛ рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдФрд░ рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдкрд░ рд▓рд╛рдЗрд╡ рд╕рдВрдЪрд╛рд░ рдХреЗ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рд╛рдзрди рд╣реИрдВред рдХреМрди рд╕рд╛ рдЪреБрдирдирд╛ рд╣реИ? рдЗрди рддрдХрдиреАрдХреЛрдВ рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ? рдЪрд▓реЛ рдкрддрд╛ рдХрд░рддреЗ рд╣реИрдВред

рд╡реЗрдм рд╕реЙрдХреЗрдЯ


рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕ рдХреА рдмрд╛рдд рдХрд░реЗрдВ рддреЛ рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╣реИ рд╡реЗрдм рдХрдореНрдпреБрдирд┐рдХреЗрд╢рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рдЬреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдкрд░ рдкреВрд░реНрдг-рджреНрд╡реИрдз рд╕рдВрдЪрд╛рд░ рдЪреИрдирд▓ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рдпрд╣ рддрдХрдиреАрдХ рдЖрдкрдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдиреНрдпреВрдирддрдо рд▓рд╛рдЧрдд рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдРрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд▓рд╛рдЗрд╡ рд╕рдВрдЪрд╛рд░ рдХреЗ рд╕рднреА рд▓рд╛рднреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдПрдХ рдЪреИрдЯ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ: рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдЬрд▓реНрджреА рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдЗрд╕ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИ! рдЖрдк рдПрдХ рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЦреБрд▓рд╛ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред

Google Chrome 4 рдореЗрдВ 2010 рдореЗрдВ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рджрд┐рдЦрд╛рдИ рджрд┐рдП, рдкрд╣рд▓рд╛ RFC ( 6455 ) 2011 рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдЖ рдерд╛ред

рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  • рдЪреИрдЯ
  • рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдЧреЗрдо
  • рд╕рд╣рдпреЛрдЧрд╛рддреНрдордХ рд╕рдВрдкрд╛рджрди
  • рд╕рд╛рдорд╛рдЬрд┐рдХ (рд╕рдорд╛рдЪрд╛рд░) рдЦрд┐рд▓рд╛рддреА рд╣реИ
  • рд╕реНрдерд╛рди рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ

рдЖрджрд┐ред

Socket.io


Socket.IO рд╡реЗрдм рд╕реЙрдХреЗрдЯ ... рдФрд░ рдЕрдиреНрдп рддрдХрдиреАрдХреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ (рд╢реАрд░реНрд╖ рдкрд░ рд▓рд┐рдЦрд┐рдд)ред рдпрд╣ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдлреНрд▓реИрд╢ рд╕реЙрдХреЗрдЯ, AJAX рд▓реЙрдиреНрдЧ рдкреЛрд▓рд┐рдВрдЧ, AJAX рдорд▓реНрдЯреАрдкрд╛рд░реНрдЯ рд╕реНрдЯреНрд░реАрдо рдЬреИрд╕реА рддрдХрдиреАрдХреЗрдВ, рдЬрдм рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рдЖрд╕рд╛рди рд╕рд╛рджреГрд╢реНрдп Fetch API рдФрд░ Axios рдХреА рддреБрд▓рдирд╛ рд╣реИред

рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдФрд░ рд╕реЙрдХреЗрдЯ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░


рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдХреЗ рдореБрдЦреНрдп рд▓рд╛рдн рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВ:

  • -, Socket.IO . , . . -, .
  • - . Socket.IO .
  • , Socket.IO () .
  • Socket.IO .
  • Socket.IO .

рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рд▓рд╛рдЗрд╡ рд╕рдВрдЪрд╛рд░ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рд╛рдзрди рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдИ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рднреА рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреА рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпрджрд┐ рд╣рдо рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЗрд╡рд▓ рджреЛ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддреЗ рд╣реИрдВ:

  • HTML рдкреЗрдЬ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП
  • рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП UPGRADE

рдпрд╣ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

  • HTML рдкреЗрдЬ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП
  • рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА ( 207kb )
  • рддреАрди рд▓рдВрдмреЗ рдорддрджрд╛рди рдЕрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдз
  • рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП UPGRADE

рдЬреЗрдПрд╕ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ, 207kb рдмрд╣реБрдд рд╣реИред рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░реИрдлрд┐рдХ рдХрд╛ рдПрдХ рддрд░реНрдХрд╣реАрди рдЙрдкрдпреЛрдЧ рдХреНрдпрд╛ рд╣реИ! Npm

рдореЗрдВ рдПрдХ рдкреИрдХреЗрдЬ рд╣реИ "websocket-vs-socket.io" рдЬреЛ рдЖрдкрдХреЛ рдЗрди рддрдХрдиреАрдХреЛрдВ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░реИрдлрд╝рд┐рдХ:




Socket.IO рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░реИрдлрд╝рд┐рдХ:




рдЕрдВрддрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ!

рдПрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛


рд╕рд░рд▓ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░


Node.js рдкрд░ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ, рд╣рдо рдкреЛрд░реНрдЯ 3001 рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╕рд░реНрд╡рд░ рдмрдирд╛рдПрдВрдЧреЗред рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ рдЬрдм рдЧреНрд░рд╛рд╣рдХ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЖрдИрдбреА рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗред рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╕рдордп, рд╣рдо рдЙрд╕реЗ рд╕рдлрд▓рддрд╛ рдХреА рд╕реВрдЪрдирд╛ рджреЗрдВрдЧреЗ: [<рдЧреНрд░рд╛рд╣рдХ-рдЖрдИрдбреА>]: <рд╕рдВрджреЗрд╢>

const WebSocket = require('ws')
const UUID = require('uuid')
const wss = new WebSocket.Server({ port: 3001 })

wss.on('connection', ws => {
  ws.id = UUID()

  ws.on('message', message => {
    ws.send(`[${ws.id}]: ${message}`)
  })
})

рдареАрдХ! рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЬреБрдбрд╝реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдореЗрд▓рд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

const WebSocket = require("ws")
const UUID      = require("uuid")
const wss       = new WebSocket.Server({ port: 3001 })

function broadcast(clientId, message) {
  wss.clients.forEach(client => {
    if(client.readyState === WebSocket.OPEN) {
      client.send(`[${clientId}]: ${message}`)
    }
  })
}

wss.on('conection', ws => {
  ws.id = UUID()
  ws.on('message', message => broadcast(ws.id, message))
})

рдмрд╕ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ! рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, WebSocket.Server рдкреНрд░рддреНрдпреЗрдХ рдЬреБрдбрд╝реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рд░рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рднреА рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реЗ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдХрдВрдкреНрдпреВрдЯрд░ (MacOS) рдпрд╛ рдХрд┐рд╕реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рдХреНрд░реЛрдо) рдкрд░ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдкрд░ рд╕рд░рд▓ рд╕рд░реНрд╡рд░


рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рдерд╛ред рдХреНрдпрд╛ рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдЗрд╕реЗ рдФрд░ рднреА рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ? рд╣рдо Socket.IO рдкрд░ рдПрдХ рд╣реА рд╕рд░реНрд╡рд░ рдХреИрд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ?

const io = require('socket.io')
const server = io.listen(3002)

server.on('connection', socket => {
  socket.on('message', message => {
    socket.emit(`[${socket.id}]: ${message}`)
    socket.broadcast.emit(`[${socket.id}]: ${message}`)
  })
})

рдХреЛрдб рд▓рдЧрднрдЧ рдЖрдзрд╛ рдЫреЛрдЯрд╛ рд╣реИ! рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рд╕рд╛рд░рдг рд╡рд┐рдзрд┐ рдкреНрд░реЗрд╖рдХ рдХреЛ рдПрдХ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдирд╣реАрдВ рднреЗрдЬрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реИрдВред

рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдПрдХ рдирд┐рдпрдорд┐рдд рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реЙрдХреЗрдЯ .IO рд╢реБрджреНрдз рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдВред рддреЛ рд╣рдо рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ?

// head
<script src="https://cdn.jsdelivr.net/npm/socket.io-client@2.3.0/dist/socket.io.slim.js"></script>

// body
<script>
  ioClient = io.connect('http://localhost:3002')
  ioClient.on('connect', socket => {
    ioClient.send('hello world')
    ioClient.on('message', msg => console.log(msg))
  })
</script>

рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдЗрд╕реЗ рд╕реАрдбреАрдПрди рд╕реЗ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЧреНрд░рд╛рд╣рдХ рд╣рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рддреНрд╡рд░рд┐рдд (рдЧрдВрджреЗ) рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рд╣рдо рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдп рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдкреА 2 рдкреА рд╕рдВрдЪрд╛рд░, рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдбреЗрдЯрд╛ рд╡рд┐рдирд┐рдордп, рдЖрджрд┐ред

рдПрдХ рдиреЛрдЯ рдкрд░


рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреЗрд▓рд┐рдВрдЧред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреА рдЪреИрдЯ рдиреЗ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд▓реА рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреНрдп рд╕рд░реНрд╡рд░ рдФрд░ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдареАрдХ рд╣реИ, рдпрджрд┐ рдЖрдк "рд╕рд░реНрд╡рд░ 1" рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рддреЗ рд╣реИрдВ, рддреЛ рдмреИрд▓реЗрдВрд╕рд░ рдЖрдкрдХреЛ "рд╕рд░реНрд╡рд░ 2" рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА: "рд╡реЗрдмрд╕реНрдХреЗрдЯ рд╣реИрдВрдбрд╢реЗрдХ рдХреЗ рджреМрд░рд╛рди рддреНрд░реБрдЯрд┐: рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛрдб: 400"ред рд╕реЙрдХреЗрдЯ .IO рдХреБрдХреАрдЬрд╝ (рдпрд╛ рд╕реНрд░реЛрдд рдкрддреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд░реВрдЯ рдХрд░рдХреЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рддрдВрддреНрд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
рдкреНрд░рджрд░реНрд╢рдиред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕ рдХреА рдкрд░рд┐рд╡рд╣рди рдкрд░рдд рдХреЗ рдКрдкрд░ рдХрдИ рд╕рд╛рд░ рдкрд░рддреЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, JSON рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдкреИрдХрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рд░реНрд╡рд░ (рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд) рдХреЛ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдРрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛрдб рдХреЛ "рдХрдВрд╕реАрд▓рд░" рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред

рддреЛ рдХреНрдпрд╛ рдЪреБрдирдирд╛ рд╣реИ?


рдЖрдк рддрдп рдХрд░реЗрдВред

Socket.IO рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд▓реЛрдб рд╕рдВрддреБрд▓рди, рд╡рд┐рдпреЛрдЧ рдпрд╛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ ... рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдкрдХреЛ рдРрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╡рдЬрд╝рди рд░рд┐рдПрдХреНрдЯ, рд░реЗрдбрдХреНрд╕ рдФрд░ рд░рд┐рдПрдХреНрдЯ-рд░реЗрдбрдХреНрд╕ рдкреИрдХреЗрдЬреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рд╡рд╛рдХрдИ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ?

рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛрдб рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рд╛рд░ рдкрд░ рд▓рд┐рдЦреЗ рдЬрд╛рдПрдВрдЧреЗред рдпрджрд┐ рдЖрдкрдХреЛ Go, Elixir, Java рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ Node.js microservices рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд▓рдЧрднрдЧ рд╕рднреА рддрд░реНрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, "рдкреНрд░рд╕рд╛рд░рдг" рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреЛ рдХрд┐ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдкрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдЗрд╕рд▓рд┐рдП рдЬрдм рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рдХреЗ рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИрдВред

рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

All Articles