Socket.io-client: рдХреЗрд╡рд▓ рд╡реЗрдмрд╕реИрдЯ рдХреЗ рд╕рд╛рде рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЗрдбрд░

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рдЕрдкреНрд░реИрд▓ 2020  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: socketio/socket.io-client

рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЗрдбрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдХреЗ рд╕рд╛рде рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЖрдкрдиреЗ рдХрд╣рд╛ рдХрд┐ RFC 6455 "рдЗрд╕рдХрд╛ рд╕рдореНрдорд╛рди рдирд╣реАрдВ" рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдкреГрд╖реНрда 22/10 рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ
https://tools.ietf.org/html/rfc6455#page -22

  1. рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЕрдиреНрдп рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб, рдЬреИрд╕реЗ рдХрд┐ рд╡реЗ рднреЗрдЬрддреЗ рдереЗ
    рдХреБрдХреАрдЬрд╝ рдпрд╛ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВред рдЕрдЬреНрдЮрд╛рдд рд╢реАрд░реНрд╖рдХ
    [RFC2616] рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЦреЗрддреЛрдВ рдХреА рдЕрдирджреЗрдЦреА рдХреА рдЬрд╛рддреА рд╣реИред

рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣ ws рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдХрд┐ engine.io рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдХреЛрдИ рд╕рд╣рд╛рд░рд╛? рдзрдиреНрдпрд╡рд╛рдж

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

рд╣реЗ рд▓реЛрдЧреЛрдВред
рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

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

https://github.com/socketio/engine.io-client/blob/27fa6949f38896e18a6ef426516359f8d54e7db6/lib/socket.js#L124

https://github.com/socketio/engine.io-client/blob/master/lib/transports/websocket.js#L63

рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрдврд╝рдХрд░ рдЖрдк рдпрд╣ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

socketIO('https://example.org', {
  path: '/api/endpoint',
  transports: ['websocket'],
  transportOptions: {
    websocket: {
      extraHeaders: {
        Cookie: 'It works',
      },
    },
  },
});

рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐:

socketIO('https://example.org', {
  path: '/api/endpoint',
  transports: ['websocket'],
  extraHeaders: {
    Cookie: 'It works',
  },
});

рд╕реНрд░реЛрдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛? рдореИрдВ рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдЬрдм рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдордп рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐:

https://socket.io/docs/client-api/#With -extraHeaders:

рдлрд╛рд▓рддреВ рдХреЗ рд╕рд╛рде
рдпрд╣ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдорддрджрд╛рди рдкрд░рд┐рд╡рд╣рди рд╕рдХреНрд╖рдо рд╣реЛ (рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛ)ред рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реЗрдмрд╕реИрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХрд╕реНрдЯрдо рд╣реЗрдбрд░ рдХреЛ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ WebSocket рд╣реИрдВрдбрд╢реЗрдХ рдХрд╕реНрдЯрдо рд╣реЗрдбрд░ рдХрд╛ рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред (рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд▓рд┐рдП WebSocket рдкреНрд░реЛрдЯреЛрдХреЙрд▓ RFC рджреЗрдЦреЗрдВ)

const socket = io({ transportOptions: { polling: { extraHeaders: { 'x-clientid': 'abc' } } }});

рдпрд╣ рдЕрдиреНрдпрдерд╛ рдмрддрд╛рддрд╛ рд╣реИ ...

рд╣реЗ рд▓реЛрдЧреЛрдВред
рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред
рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

@najibghadri @behruzz рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдКрдкрд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдорддрджрд╛рди рдХреЗ рддрд╣рдд рдЕрддрд┐рд░рд┐рдХреНрдд рдордд рдбрд╛рд▓реЛ

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдиреЛрдбрдВрдЬ рдореЗрдВ рд░рдирдиреАрдВрдЬ, рдХреНрд░реЛрдо рдореЗрдВ рдЪрд▓рдиреЗ рдкрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рд░реВрдк рдореЗрдВ рдпрд╣ рдПрдкреАрдЖрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
рдореБрдЭреЗ рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рднреА:

рдЕрддрд┐рд░рд┐рдХреНрддрд╣реЗрдбрд░реНрд╕ | {} | рд╣реЗрдбрд░ рдЬреЛ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (xhr-polling рдФрд░ websockets рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред рдлрд┐рд░ рдЗрди рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИрдВрдбрд╢реЗрдХ рдХреЗ рджреМрд░рд╛рди рдпрд╛ рд╡рд┐рд╢реЗрд╖ рдкрд░рджреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

@AvailCat рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ

@rotvr рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ WebSocket рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЪрд┐рдкрдЪрд┐рдкрд╛ рд╕рддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ WebSocket рдХрдиреЗрдХреНрд╢рди (рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд TCP рдХрдиреЗрдХреНрд╢рди) рдкреВрд░реЗ рд╕рддреНрд░ рдХреЗ рджреМрд░рд╛рди рдЦреБрд▓рд╛ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдорддрджрд╛рди рдкрд░рд┐рд╡рд╣рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ HTTP рдЕрдиреБрд░реЛрдз рдПрдХ рдХреБрдХреА ( io ) рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрд┐рдкрдЪрд┐рдкрд╛-рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ: https://socket.io/docs/use-multiple-nodes/

рдЗрд╕реЗ рднреА рджреЗрдЦреЗрдВ: https://github.com/socketio/engine.io-client/issues/635#issuecomment -638713082

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

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

zappfinger picture zappfinger  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

Korri picture Korri  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

david-fong picture david-fong  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ