Peerjs: рд╕рд░реНрд╡рд░ рдбрд╛рдЙрди рд╣реИ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рдордИ 2020  ┬╖  25рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: peers/peerjs

рдирдорд╕реНрддреЗ,

рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдЪрд╛рдирдХ рдХрд▓ рд╕реЗ, рдпрд╣ рдЕрдм рдФрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред (рдореИрдВрдиреЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЫреБрдЖ)
рдХреНрдпрд╛ рд╣реБрдЖ ? рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ?

рдЖрдкрдХреЛ рдзрдиреНрдпрд╡рд╛рдж

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

@lnogueir
рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдЧрд╛ - рд╣рд╛рдБред рдореИрдВ рд▓рдЧрднрдЧ рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдкреАрдпрд░-рдЬреЗрдПрд╕ рд╕рд░реНрд╡рд░ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рд╣рд░ рджрд┐рди рд╕реИрдХрдбрд╝реЛрдВ рдХреЙрд▓ рд╣реЛрддреЗ рд╣реИрдВред
https://github.com/peers/peerjs-server . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдХреЛ рд╕реЗрдЯрдЕрдк рдХрд░рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реИ

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЪреВрдВрдХрд┐ 0.peerjs.com рдПрдХ рд╕рд┐рдЧреНрдирд▓рд┐рдВрдЧ-рд╕рд░реНрд╡рд░ рд╣реИ рдФрд░ рд╕реНрдЯрди/рдЯрд░реНрди-рд╕рд░реНрд╡рд░ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╢рд╛рдпрдж рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреАрдпрд░рдЬ рд╕рд┐рдЧреНрдирд▓рд┐рдВрдЧ-рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ

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

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

рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреЛрдИ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рд╣реИред

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИ:
https://pastebin.com/xXSy8S3M

рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдЬрд┐рд╕ рд╕рд╣рдХрд░реНрдореА рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдореМрдЬреВрдж рд╣реИ?
рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП
рдпрд╣ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

peer.on('error', function(err) {
    console.log("Error: ", err);
});

рдХреНрдпрд╛ рдЖрдк рдЬрд┐рд╕ рд╕рд╣рдХрд░реНрдореА рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдореМрдЬреВрдж рд╣реИ?
рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП
рдпрд╣ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

peer.on('error', function(err) {
    console.log("Error: ", err);
});

рд╣рд╛рдВ, рдкреАрдпрд░ рдЖрдИрдбреА рдореМрдЬреВрдж рд╣реИ, рдФрд░ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ, рдореИрдВрдиреЗ рдЕрднреА "рдХреНрд▓рд╛рдЙрдб рдкреАрд░рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдкрдврд╝реА рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ 0.peerjs.com рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред" рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ, рдХреНрдпрд╛ рдпрд╣ рдирдпрд╛ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ред

рдореИрдВ рдмрд╣реБрдд рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ, рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛ред

рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХрднреА-рдХрднреА рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ:
рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде wss://0.peerjs.com/peerjs?key=peerjs&id=123222589562487856955685485555&token=ocyxworx62i рдкрддреЗ рдкрд░ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм рдореЗрдВ рдореБрдЭреЗ 101 HTTP рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИред

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ TURN рд╕рд░реНрд╡рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреАрдЪреЗ рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди STUN рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреЛрд░реНрдЯ, рдПрд╕рдПрд╕рдПрд▓ рдФрд░ рдХреБрдЫ рдЖрдЗрд╕рд╕рд░реНрд╡рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

const Config = {
    secure: true,
    port: 443,
    iceServers: [
        { urls: 'stun:stun.l.google.com:19302'  }, 
        { urls: 'stun:stun1.l.google.com:19302' }, 
        { urls: 'stun:stun2.l.google.com:19302' }, 
    ]
};

var peer = new Peer(Config); 

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ TURN рд╕рд░реНрд╡рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреАрдЪреЗ рд▓рдЧрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди STUN рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкреЛрд░реНрдЯ, рдПрд╕рдПрд╕рдПрд▓ рдФрд░ рдХреБрдЫ рдЖрдЗрд╕рд╕рд░реНрд╡рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

const Config = {
    secure: true,
    port: 443,
    iceServers: [
        { urls: 'stun:stun.l.google.com:19302'  }, 
        { urls: 'stun:stun1.l.google.com:19302' }, 
        { urls: 'stun:stun2.l.google.com:19302' }, 
    ]
};

var peer = new Peer(Config); 

рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣реА рд╣реИред
"рдХрдиреЗрдХреНрд╢рди", "рдЦреБрд▓рд╛" рдФрд░ "рддреНрд░реБрдЯрд┐" рдИрд╡реЗрдВрдЯ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИрдВред

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

рд╕рд░реНрд╡рд░ рдЕрд╕реНрдерд┐рд░ рдФрд░/рдпрд╛ рдЕрддрд┐рднрд╛рд░рд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред 0.peerjs.com рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдпрд╛ рддреЛ рдорд┐рд▓рддрд╛ рд╣реИ

  • рдПрдХ рдЦрд░рд╛рдм HTTP рд╕реНрдерд┐рддрд┐ рдХреЛрдб
  • рдПрдХ рд╕рдордп рд╕рдорд╛рдкреНрдд
  • рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдЬреЛ рдореБрдЭреЗ рдмрддрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдХреА рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ

рдЙрдкрд░реЛрдХреНрдд рд╕рдВрджреЗрд╢ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

{
    "type":"ERROR",
    "payload":{"msg":"Server has reached its concurrent user limit"},
}

рдХреНрдпрд╛ рд╕рд░реНрд╡рд░ рдХреЗ рдЕрдиреБрд░рдХреНрд╖рдХ рдЗрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ? рдореИрдВ рдПрдХрдореБрд╢реНрдд рджрд╛рди рдпрд╛ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЖрд╡рд░реНрддреА рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдБ ред

рдореЗрд░реЗ рд╕рд╛рде рднреА рд╡рд╣реА рджрд┐рдХреНрдХрдд рд╣реИред рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдЕрдм рдЕрдЪрд╛рдирдХ рдореИрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
рдкреАрдЕрд░.рдорд┐рди.рдЬреЗрдПрд╕:1 рдкреЛрд╕реНрдЯ https://0.peerjs.com/peerjs/wun5gx7lj7000000/141ot3fd9cwf/id?i=1 net::ERR_TIMED_OUT
рдХреНрдпрд╛ рдпрд╣ рдкреАрдпрд░рдЬ рд╕рд░реНрд╡рд░ рдпрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ STUN рдФрд░ TURN рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ?

@lnogueir
рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдЧрд╛ - рд╣рд╛рдБред рдореИрдВ рд▓рдЧрднрдЧ рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдкреАрдпрд░-рдЬреЗрдПрд╕ рд╕рд░реНрд╡рд░ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рд╣рд░ рджрд┐рди рд╕реИрдХрдбрд╝реЛрдВ рдХреЙрд▓ рд╣реЛрддреЗ рд╣реИрдВред
https://github.com/peers/peerjs-server . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдХреЛ рд╕реЗрдЯрдЕрдк рдХрд░рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реИ

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЪреВрдВрдХрд┐ 0.peerjs.com рдПрдХ рд╕рд┐рдЧреНрдирд▓рд┐рдВрдЧ-рд╕рд░реНрд╡рд░ рд╣реИ рдФрд░ рд╕реНрдЯрди/рдЯрд░реНрди-рд╕рд░реНрд╡рд░ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╢рд╛рдпрдж рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреАрдпрд░рдЬ рд╕рд┐рдЧреНрдирд▓рд┐рдВрдЧ-рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ

@lnogueir
рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░реЗрдЧрд╛ - рд╣рд╛рдБред рдореИрдВ рд▓рдЧрднрдЧ рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдкреАрдпрд░-рдЬреЗрдПрд╕ рд╕рд░реНрд╡рд░ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд┐рд╕рдореЗрдВ рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рд╣рд░ рджрд┐рди рд╕реИрдХрдбрд╝реЛрдВ рдХреЙрд▓ рд╣реЛрддреЗ рд╣реИрдВред
https://github.com/peers/peerjs-server . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдХреЛ рд╕реЗрдЯрдЕрдк рдХрд░рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реИ

рдореИрдВ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:
@Florrr
рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдкреАрдпрд░рдЬ рд╕рд░реНрд╡рд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдореЗрд░реЗ рд╕рднреА рдЯрд╛рдЗрдордЖрдЙрдЯ рдореБрджреНрджреЛрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рджред

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

рд╕реЛрдо, 25 рдордИ 2020, 04:57 рд▓реБрдХрд╛рд╕ рдиреЛрдЧрд┐рд░рд╛, рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:

@Florrr https://github.com/Florrr
рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдкреАрдпрд░рдЬ рд╕рд░реНрд╡рд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░реЗ рд╕рднреА рдЯрд╛рдЗрдордЖрдЙрдЯ рдореБрджреНрджреЛрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛ рдЧрдпрд╛
рд╡рд╛рдкрд╕ рд╕рд╛рдорд╛рдиреНрдп рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рджред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/peers/peerjs/issues/671#issuecomment-633351840 , рдпрд╛
рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд
https://github.com/notifications/unsubscribe-auth/AALME5UNSH456EHDNAPZ7HDRTHNDHANCNFSM4NEJLYXA
.

рдХреНрдпрд╛ рд╕рд░реНрд╡рд░ рдлрд┐рд░ рд╕реЗ рдЕрд╕реНрдерд┐рд░ рд╣реИ? рдореИрдВ рдПрдХ рдРрдк рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ ~ 16 рдШрдВрдЯреЗ рдкрд╣рд▓реЗ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдЕрдм рдпрд╣ рдХрдиреЗрдХреНрд╢рди рдмрд╕ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ

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

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рд╕рд╛рдерд┐рдпреЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕рд┐рдЧреНрдирд▓рд┐рдВрдЧ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рд╕рд┐рдЧреНрдирд▓рд┐рдВрдЧ рд╕рд░реНрд╡рд░ (рдЕрдзрд┐рдХ рдпрд╛ рдХрдо) рдЪреБрди рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗ рдХрд┐ рдЙрд╕реА рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

@HidalgoIvan рдореИрдВ рд╕рд░реНрд╡рд░ рдХрд╛ рдЕрдиреБрд░рдХреНрд╖рдХ рдирд╣реАрдВ рд╣реВрдВ - рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕рд░реНрд╡рд░ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╕рд┐рдЧреНрдирд▓рд┐рдВрдЧ-рд╕рд░реНрд╡рд░ рдЕрд╕реНрдерд┐рд░ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдореИрдВ рдЖрдкрдХреЛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕реЗрдЯ рдЕрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд╕реНрддрд╛ рдФрд░ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдк рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ)

рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдкрдЯрд╛рдЗрдо рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ: https://peerjs.92k.de/

рдзрдиреНрдпрд╡рд╛рдж @ рдкрд╣рд▓реЗ 99 , рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рдореИрдВрдиреЗ рдЖрдЬ рд╕реБрдмрд╣ рдЕрдкрдирд╛ рд╕рд░реНрд╡рд░ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ, рдореИрдВ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдбреЙрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреАрдпрд░рдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдкреЛрд░реНрдЯ 9000 рдЦреЛрд▓рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрд╕рдПрд╕рдПрд▓ рдирд╣реАрдВ рд╣реИ, рди рдХрд┐ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рдкрддрд╛, рдЬреЛ рдХрд┐ рд╣реИред рдЖрдкрдиреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рдмрдЬрд╛рдп рдкреАрд░рдЬ.92k.de рдХреЛ рд╕рд░реНрд╡рд░ рдкрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХреИрд╕реЗ рдХрд┐рдпрд╛?

рдореИрдВрдиреЗ рдПрдХ рд╣реЗрдЯреНрдЬрд╝рдирд░ рд╕рд░реНрд╡рд░ рдХреЛ ansible рдХреЗ рд╕рд╛рде рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ред рдЖрдк рдпрд╣рд╛рдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://gitlab.com/prior99/peerjs-server

рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрд╕рдПрд╕рдПрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рдореИрдВ рдХреИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдкреБрд╖реНрдЯрд┐ рдХреА рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдирдорд╕реНрддреЗ @ рдкрд╣рд▓реЗ 99 , рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЪреАрдЬреЛрдВ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреЛ рдЧрдпрд╛ рд╣реВрдВ ...
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдВрдд рдореЗрдВ рдЖрдкрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдЕрдкрдирд╛ рдЙрдЪрд┐рдд рд╕рд░реНрд╡рд░ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд▓реЗрддрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЖрдкрдХрд╛ рдХрд╛рдо рднреА рдирд╣реАрдВ рдХрд░рд╡рд╛ рд╕рдХрддрд╛... рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рд╣рдХрд░реНрдореА рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ:

var peer = new Peer({
    host: 'peerjs.92k.de',
    port: 443,
    debug: 3
});

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдореБрдЭреЗ рдПрдХ рдЖрдИрдбреА рдорд┐рд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╕рд╣рдХрд░реНрдореА рджреВрд╕рд░реЗ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ 0.peerjs.com рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЫреБрдЖред рдХреНрдпрд╛ рдореИрдВ рд╕рд╣рдХрд░реНрдореА рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдБ?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдореБрдЭреЗ рдПрдХ рдЖрдИрдбреА рдорд┐рд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╕рд╣рдХрд░реНрдореА рджреВрд╕рд░реЗ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ 0.peerjs.com рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЫреБрдЖред рдХреНрдпрд╛ рдореИрдВ рд╕рд╣рдХрд░реНрдореА рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдБ?

рд╕рд╛рдерд┐рдпреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЕрднреА рднреА STUN рдФрд░ TURN рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдЪреЗрдд рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ: рдмрд╣реБрдд рд╕реЗ рдРрд╕реЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдк рдирд┐:рд╢реБрд▓реНрдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ TURN рд╕рд░реНрд╡рд░ (рд╕рдВрднрд╡рддрдГ рдЖрдкрдХрд╛ рдЕрдкрдирд╛) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЬрдм рд╡реЗ рдПрдХ рд╕рдордорд┐рдд NAT рдХреЗ рдкреАрдЫреЗ рд╣реЛрдВ рддреЛ рд╕рд╛рдерд┐рдпреЛрдВ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред

:javascript var peer = new Peer({ host: 'peerjs.92k.de', port: 443, debug: 3, config: { iceServers: [ { urls: 'stun:stun.l.google.com:19302' }, { urls: 'stun:stun1.l.google.com:19302' }, ..., { urls: 'turn:your.own.host:3478', username: 'someuser', credential: 'somepass'}, ] }, });

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп NAT рдХреЗ рдкреАрдЫреЗ рд╣реВрдБред
рдпрд╣рд╛рдБ рд╕реЗрдЯрдЕрдк рд╣реИ:

var peer = new Peer({
    host: 'peerjs.92k.de',
    port: 443,
    config: {'iceServers': [
            { url: 'stun:stun.l.google.com:19302' },
            { url: 'stun:stun1.l.google.com:19302' },
            { url: 'stun:stun2.l.google.com:19302' },
            { url: 'stun:stun3.l.google.com:19302' },
            { url: 'stun:stun4.l.google.com:19302' }
        ]
    },
    debug: 3
});

рдФрд░ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред рдХреНрдпрд╛ рдЖрдк рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ?
https://www.txori.com/peerjs

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╣рдо рдЗрд╕реЗ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВрдЧреЗ

рдЖрдкрдХреЛ secure: true рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ:

new PeerJS(null, { host: "peerjs.92k.de", secure: true });

рдореИрдВрдиреЗ рдХрдИ рдЧреЗрдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдП рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдХрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдФрд░ рдореЗрд░реЗ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддреЗ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
https://gitlab.com/prior99/frabble
https://prior99.gitlab.io/frabble/#/main -menu

рдзрдиреНрдпрд╡рд╛рдж @ рдкрд╣рд▓реЗ 99 , рд▓реЗрдХрд┐рди рд╕реБрд░рдХреНрд╖рд┐рдд: рд╕рддреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА, рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдкрд░ рдирд╣реАрдВ
рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ ...

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

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

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

furozen picture furozen  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

nick0702y picture nick0702y  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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