Socket.io-client: Io.Manager рдФрд░ io.Socket рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рдЬреВрди 2018  ┬╖  14рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: socketio/socket.io-client

рдореИрдВ рд╕реЙрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдирдП рддрд░рд╣ рдХрд╛ рд╣реВрдБред рдЧреНрд░рд╛рд╣рдХред рдХрдИ рдмрд╛рд░ рдбреЙрдХреНрдЯрд░ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ io.Manager рдФрд░ io.Socket рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ рдореИрдВ io () рд╕реЗ рдПрдХ рдирдпрд╛ рд╕реЙрдХреЗрдЯ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдкреНрд░рдмрдВрдзрдХ рдЙрджрд╛рд╣рд░рдг рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдЗрд╕ рдмреАрдЪ, рдкреНрд░рдмрдВрдзрдХ рдХреА рдШрдЯрдирд╛ рдФрд░ рд╕реЙрдХреЗрдЯ рдХреА рдШрдЯрдирд╛ рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИред

рдзрдиреНрдпрд╡рд╛рджред

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

рд╣рд╛рдБ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рддрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреНрдпрд╛ рдмрдирд╛рдирд╛ рд╣реИ рдФрд░ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░рдирд╛ рд╣реИред

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

+1

+1

рд╣рд╛рдБ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рддрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреНрдпрд╛ рдмрдирд╛рдирд╛ рд╣реИ рдФрд░ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░рдирд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рдкреНрд░рдмрдВрдзрдХ рдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдВрдкрддреНрддрд┐ рд╕реАрдзреЗ io рдХреЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ
рдЬреИрд╕реЗ
socket = io( 'http://192.168.2.2:8088' + Param.chatNamespace + '?parammmm=1', { query: { key: 'Michael' }, path: Param.path, transports: ['websocket'], autoConnect: false, // like this, could be found in manager piece } );
рдФрд░ рдпрд╣реА рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдореИрдВ рднреА

рдореИрдВ рдЕрдВрддрд░ рдЬрд╛рдирдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдЕрдЧрд░ рдЗрд╕рдХреЗ рдмреАрдЪ рдХреЛрдИ рдПрдХ рд╣реИ:

  • io (рдпреВрдЖрд░рдПрд▓, рд╡рд┐рдХрд▓реНрдк)
  • io.connect (url, рд╡рд┐рдХрд▓реНрдк)

рдФрд░ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реИ:

  • рдирдпрд╛ рдкреНрд░рдмрдВрдзрдХ (url, рд╡рд┐рдХрд▓реНрдк)

рдореИрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдПрдХ рдмрд╣реБрдд рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдХрд┐рди рдардВрдбреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ html рдкреЗрдЬ рдореЗрдВ socket.io рдпрд╛ socket.io- рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ

рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рдо рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд▓рдЯрдХрд╛ рдкрд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рднреНрд░рдо рд╣реИред

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдорддред рдореБрдЭреЗ рдкреНрд░рдмрдВрдзрдХ рдФрд░ рд╕реЙрдХреЗрдЯ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред

+1,

+1

рдореЗрдиреНрд╣ !! рддреЛ рдЗрд╕ рдкрд░ рдЕрднреА рддрдХ рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ ??? wth рдХреА рддрд░рд╣ !!

рдирдорд╕реНрддреЗ! рдореИрдВрдиреЗ рдкреНрд░рдмрдВрдзрдХ рдФрд░ рд╕реЙрдХреЗрдЯ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ рдЬреЛрдбрд╝реЗ

рдкреНрд░рдмрдВрдзрдХ Engine.IO рдХреНрд▓рд╛рдЗрдВрдЯ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдирд┐рдореНрди-рд╕реНрддрд░ рдХрд╛ рдЗрдВрдЬрди рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ (рд╡реЗрдмрд╕реНрдХреЗрдЯ рдпрд╛ HTTP рд▓реЙрдиреНрдЧ-рдкреЛрд▓рд┐рдВрдЧ рдЬреИрд╕реЗ рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред
рдкреНрд░рдмрдВрдзрдХ рдкреБрди: рд╕рдВрдпреЛрдЬрди рддрд░реНрдХ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред
рдПрдХ рдПрдХрд▓ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рд╕реЙрдХреЗрдЯ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рд╕реЙрдХреЗрдЯ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореМрд▓рд┐рдХ рд╡рд░реНрдЧ рд╣реИред рдПрдХ рд╕реЙрдХреЗрдЯ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдирд╛рдорд╕реНрдерд╛рди (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдФрд░ рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдореВрд▓ рд░реВрдк рд╕реЗ, io() рдЪрд▓рдиреЗ рдкрд░ рдкреНрд░рдмрдВрдзрдХ рдЙрджрд╛рд╣рд░рдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рд╕реЙрдХреЗрдЯ рдХреЗ io рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рджреВрд╕рд░рд╛ рд╕реЙрдХреЗрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЬрдм рддрдХ рдХрд┐ рдЖрдк forceNew рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ):

const socket = io();
const socket2 = io("/test2");
// socket.io === socket2.io
const socket3 = io("/test3", { forceNew: true }); // new manager
// socket.io !== socket3.io

рдШрдЯрдирд╛рдУрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдШрдЯрдирд╛рдПрдВ рдХрдиреЗрдХреНрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдФрд░ рдкреНрд░рдмрдВрдзрдХ рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реЙрдХреЗрдЯ рджреЛрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХреА рдЬрд╛рдПрдВрдЧреА:

  • connect_error
  • connect_timeout
  • рдкреБрдирдГ рдХрдиреЗрдХреНрдЯ
  • рдкреБрдирдГ рдХрдиреЗрдХреНрдЯ рд╣реЛ
  • рдкреБрдирдГ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
  • рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛
  • рдкрд┐рдВрдЧ
  • рдкрд╛рдВрдЧ

рд╕реЙрдХреЗрдЯ рдЗрди рдЕрддрд┐рд░рд┐рдХреНрдд рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░реЗрдЧрд╛, рдЬреЛ рдирд╛рдорд╕реНрдерд╛рди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ:

  • рдЬреБрдбрд┐рдпреЗ
  • рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ
  • рддреНрд░реБрдЯрд┐

рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдкрд╖реНрдЯ рд╣реИред рдФрд░ рджреЗрд░реА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ!

@darrachequesne рдЖрдкрдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕рд╛рде рд╣реА рдЖрдк io(url, options) рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЛ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
io.connect(url, options) рдХреГрдкрдпрд╛? рдбреЙрдХреНрдЯрд░ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рджреЛрдиреЛрдВ рдПрдХ рд╕реЙрдХреЗрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВ рднреА

рдореИрдВ рдЕрдВрддрд░ рдЬрд╛рдирдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдЕрдЧрд░ рдЗрд╕рдХреЗ рдмреАрдЪ рдХреЛрдИ рдПрдХ рд╣реИ:

  • io (рдпреВрдЖрд░рдПрд▓, рд╡рд┐рдХрд▓реНрдк)
  • io.connect (url, рд╡рд┐рдХрд▓реНрдк)

рдФрд░ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реИ:

  • рдирдпрд╛ рдкреНрд░рдмрдВрдзрдХ (url, рд╡рд┐рдХрд▓реНрдк)

рдореИрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдПрдХ рдмрд╣реБрдд рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдХрд┐рди рдардВрдбреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ html рдкреЗрдЬ рдореЗрдВ socket.io рдпрд╛ socket.io- рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ

рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рдо рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд▓рдЯрдХрд╛ рдкрд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рднреНрд░рдо рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ io(url, options) рдФрд░ io.connect(url, options) рдмрд░рд╛рдмрд░ рд╣реИрдВ:

// https://github.com/socketio/socket.io-client/blob/2.3.0/lib/index.js#L15
module.exports = exports = lookup;

// https://github.com/socketio/socket.io-client/blob/2.3.0/lib/index.js#L85
exports.connect = lookup;

рдЕрдм, рдПрдХ рд╣реА рдХрд╛рдо рдХреЛ рдХрд░рдиреЗ рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рдХреНрдпреЛрдВ рд╣реИрдВ, рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рд╡рд╛рд▓ рд╣реИ ...: рдореБрд╕реНрдХрд╛рди:ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 2012 рдХреЗ рдмрд╛рдж рд╕реЗ: https://github.com/socketio/socket.io-client/commit/d5652feadc1a2085942b5a6a22394f07242e77b2ред рдореИрдВ рдЬрд╛рдБрдЪ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рдХреЗ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░рдг рд╣реИрдВ, рд▓реЗрдХрд┐рди v3 рдореЗрдВ connect() рдХреЛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдкреНрд░рдмрдВрдзрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╢рд╛рдпрдж рдЗрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореВрд▓ рд░реВрдк рд╕реЗ:

const socket = io("ws://example.com/my-namespace", {
  reconnectionDelayMax: 10000,
  query: {
    auth: "123"
  }
});

// is the same as
const manager = new Manager("ws://example.com", {
  reconnectionDelayMax: 10000
});
const socket = manager.socket("/my-namespace", {
  query: {
    auth: "123"
  }
});

рдореИрдВрдиреЗ рдкреНрд░рд▓реЗрдЦрди рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рд╣реИ: https://github.com/socketio/socket.io-website/commit/e779468a8df739a7ff4316719af2931d6ec70539

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдм рд╕реНрдкрд╖реНрдЯ рд╣реИ!

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

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

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

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

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

exilonX picture exilonX  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Tiboonn picture Tiboonn  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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