WebRTC рдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ: p2p, рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░, рд╢реВрдиреНрдп рд╡рд┐рд▓рдореНрдмрддрд╛

WebRTC рдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ: p2p, рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░, рд╢реВрдиреНрдп рд╡рд┐рд▓рдореНрдмрддрд╛
рд╕реЗрд╡рд╛рдХреЛ рд░реВрдкрдорд╛ рд╕рдлреНрдЯрд╡реЗрдпрд░, рд╕реЗрд╡рд╛рдХреЛ рд░реВрдкрдорд╛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░, рд╕реЗрд╡рд╛рдХреЛ рд░реВрдкрдорд╛ рдкреНрд▓реЗрдЯрдлрд░реНрдо, рд╕реЗрд╡рд╛рдХреЛ рд░реВрдкрдорд╛ рд╕рдЮреНрдЪрд╛рд░ рдкреНрд▓реЗрдЯрдлрд░реНрдо, рд╕реЗрд╡рд╛рдХреЛ рд░реВрдкрдорд╛ рднрд┐рдбрд┐рдпреЛ рдХрдиреНрдлрд░реЗрдиреНрд╕рд┐рдЩ, рд╕реЗрд╡рд╛рдХреЛ рд░реВрдкрдорд╛ рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗ рд╣реБрдиреНрдЫ? рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ (рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ) рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдкрд╣рд┐рд▓реЗ рдиреИ рдзреЗрд░реИ рдкреНрд░рдпрд╛рд╕рд╣рд░реВ рднрдЗрд╕рдХреЗрдХрд╛ рдЫрдиреН, рдЬрд╕реНрддреИ Stadia, Google рджреНрд╡рд╛рд░рд╛ рд╣рд╛рд▓реИ рд╕реБрд░реВ рдЧрд░рд┐рдПрдХреЛред Stadia WebRTC рдорд╛ рдирдпрд╛рдБ рдЫреИрдирддрд░ рдХреЗ рдЕрд░реВрд▓реЗ рдкрдирд┐ WebRTC рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫрдиреН?

Thanh Nguyen рд▓реЗ рдЖрдлреНрдиреЛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ CloudRetro рдорд╛ рдпреЛ рдЕрд╡рд╕рд░ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗред CloudRetro Pion рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫ, рд▓реЛрдХрдкреНрд░рд┐рдп Go рдорд╛ рдЖрдзрд╛рд░рд┐рдд WebRTC рдкреБрд╕реНрддрдХрд╛рд▓рдп (рдзрдиреНрдпрд╡рд╛рдж рджреЗрдЦрд╛рдЗрдпреЛ рдпреЛ рд▓реЗрдЦ рддрдпрд╛рд░ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╣рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ Pion рд╡рд┐рдХрд╛рд╕ рдЯреЛрд▓реАрдмрд╛рдЯ)ред рдпрд╕ рд▓реЗрдЦрдорд╛, рдерд╛рдиреНрд╣рд▓реЗ рдЖрдлреНрдиреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рдХреЛ рдПрдХ рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рд░ рдЙрдирд▓реЗ рдХреЗ-рдХрд╕реНрддрд╛ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬрд╣рд░реВ рд╕рд┐рдХреЗрдХрд╛ рдерд┐рдП рд░ рдЖрдлреНрдиреЛ рдХрд╛рдордХреЛ рдХреНрд░рдордорд╛ рдЙрдирд▓реЗ рдХреЗ рдХрд╕реНрддрд╛ рдЪреБрдиреМрддреАрд╣рд░реВ рд╕рд╛рдордирд╛ рдЧрд░реЗ рднрдиреНрдиреЗ рдмрд╛рд░реЗ рдкрдирд┐ рдХреБрд░рд╛ рдЧрд░реНрдЫрдиреНред

рдкреНрд░рд╡реЗрд╢

рдЧрдд рд╡рд░реНрд╖, рдЬрдм рдЧреБрдЧрд▓рд▓реЗ Stadia рдШреЛрд╖рдгрд╛ рдЧрд░реНтАНрдпреЛ, рдпрд╕рд▓реЗ рдореЗрд░реЛ рджрд┐рдорд╛рдЧ рдЙрдбрд╛рдпреЛред рдпреЛ рд╡рд┐рдЪрд╛рд░ рдпрддрд┐ рдЕрдиреМрдареЛ рд░ рдЕрднрд┐рдирд╡ рдЫ рдХрд┐ рдо рдирд┐рд░рдиреНрддрд░ рд╕реЛрдЪрд┐рд░рд╣реЗрдХреЛ рдЫреБ рдХрд┐ рдпреЛ рдЕрд╡рд╕реНрдерд┐рдд рдкреНрд░рд╡рд┐рдзрд┐ рд╕рдВрдЧ рдпреЛ рдХрд╕рд░реА рд╕рдореНрднрд╡ рдЫред рдпрд╕ рд╡рд┐рд╖рдпрд▓рд╛рдИ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдмреБрдЭреНрдиреЗ рдЗрдЪреНрдЫрд╛рд▓реЗ рдорд▓рд╛рдИ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреНрд▓рд╛рдЙрдб рдЧреЗрдордХреЛ рдЖрдлреНрдиреИ рд╕рдВрд╕реНрдХрд░рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдкреНрд░реЗрд░рд┐рдд рдЧрд░реНтАНрдпреЛред рдирддрд┐рдЬрд╛ рдХреЗрд╡рд▓ рд╢рд╛рдирджрд╛рд░ рдерд┐рдпреЛред рддрд▓ рдо рдореЗрд░реЛ рд╡рд░реНрд╖рдорд╛ рдХрд╛рдо рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд╛рдЭрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБ рдкрд░рд┐рдпреЛрдЬрдирд╛.

TLDR: рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд╣рд░реВрдХреЛ рд╕рд╛рде рдЫреЛрдЯреЛ рд╕реНрд▓рд╛рдЗрдб рд╕рдВрд╕реНрдХрд░рдг

рдХрд┐рди рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ рднрд╡рд┐рд╖реНрдп рд╣реЛ

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

Google Stadia рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛ рдЦреЗрд▓реНрди рджрд┐рдиреНрдЫ AAA рдЦреЗрд▓рд╣рд░реВ (рдЕрд░реНрдерд╛рддреН рдЙрдЪреНрдЪ-рдЕрдиреНрдд рдмреНрд▓рдХрдмрд╕реНрдЯрд░ рдЦреЗрд▓рд╣рд░реВ) YouTube рдЬрд╕реНрддреИ рдЗрдиреНрдЯрд░рдлреЗрд╕рдорд╛ред рдЙрд╣реА рдкрджреНрдзрддрд┐ рдЕрдиреНрдп рднрд╛рд░реА рдЕрдлрд▓рд╛рдЗрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдЬрд╕реНрддреИ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо рд╡рд╛ 2D/3D рдЧреНрд░рд╛рдлрд┐рдХ рдбрд┐рдЬрд╛рдЗрди, рдЖрджрд┐ред рддрд╛рдХрд┐ рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдзреЗрд░реИ рдкреНрд▓реЗрдЯрдлрд░реНрдорд╣рд░реВрдорд╛ рдХрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдХрд░рдгрд╣рд░реВрдорд╛ рдирд┐рд░рдиреНрддрд░ рд░реВрдкрдорд╛ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдЫреМрдВред

WebRTC рдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ: p2p, рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░, рд╢реВрдиреНрдп рд╡рд┐рд▓рдореНрдмрддрд╛
рдпрд╕ рдкреНрд░рд╡рд┐рдзрд┐рдХреЛ рднрд╡рд┐рд╖реНрдп: рдХрд▓реНрдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдпрджрд┐ Microsoft Windows 10 рдХреНрд░реЛрдо рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдЪрд▓реНрдпреЛ рднрдиреЗ?

рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рд░реВрдкрдорд╛ рдЪреБрдиреМрддреАрдкреВрд░реНрдг рдЫ

рдЧреЗрдорд┐рдЩ рддреА рджреБрд░реНрд▓рдн рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рд╣реЛ рдЬрд╣рд╛рдБ рдирд┐рд░рдиреНрддрд░, рдЫрд┐рдЯреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреНрдЫред рдпрджрд┐ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдВ рд╣рд╛рдореАрд▓реЗ рдкреГрд╖реНрдардорд╛ рдХреНрд▓рд┐рдХ рдЧрд░реНрджрд╛ 2 рд╕реЗрдХреЗрдиреНрдб рдврд┐рд▓рд╛рдЗрдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдЫреМрдВ, рдпреЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЫред рд▓рд╛рдЗрдн рднрд┐рдбрд┐рдпреЛ рд╕реНрдЯреНрд░рд┐рдорд╣рд░реВ рдХреЗрд╣реА рд╕реЗрдХреЗрдиреНрдб рдврд┐рд▓реЛ рд╣реБрдиреНрдЫрдиреН, рддрд░ рдЕрдЭреИ рдкрдирд┐ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдЧрд░реНрджрдЫред рдпрджреНрдпрдкрд┐, рдпрджрд┐ рдЦреЗрд▓ рдмрд╛рд░рдореНрдмрд╛рд░ 500ms рд▓реЗ рдврд┐рд▓реЛ рд╣реБрдиреНрдЫ рднрдиреЗ, рдпреЛ рдЦреЗрд▓реНрди рд╕рдХрд┐рдБрджреИрдиред рд╣рд╛рдореНрд░реЛ рд▓рдХреНрд╖реНрдп рдЕрддреНрдпрдиреНрдд рдХрдо рд╡рд┐рд▓рдореНрдмрддрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБ рд╣реЛ рддрд╛рдХрд┐ рдЗрдирдкреБрдЯ рд░ рдорд┐рдбрд┐рдпрд╛ рдмреАрдЪрдХреЛ рдЕрдиреНрддрд░ рд╕рдХреЗрд╕рдореНрдо рд╕рд╛рдиреЛ рд╣реЛрд╕реНред рддреНрдпрд╕реИрд▓реЗ, рднрд┐рдбрд┐рдпреЛ рд╕реНрдЯреНрд░рд┐рдорд┐рдЩрдХреЛ рдкрд░рдореНрдкрд░рд╛рдЧрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдпрд╣рд╛рдБ рд▓рд╛рдЧреВ рд╣реБрдБрджреИрдиред

WebRTC рдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ: p2p, рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░, рд╢реВрдиреНрдп рд╡рд┐рд▓рдореНрдмрддрд╛
рд╕рд╛рдорд╛рдиреНрдп рдХреНрд▓рд╛рдЙрдб рдЦреЗрд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ

рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ CloudRetro

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

рдкрд░рд┐рдпреЛрдЬрдирд╛ CloudRetro.io рд░реЗрдЯреНрд░реЛ рдЧреЗрдорд┐рдЩрдХрд╛ рд▓рд╛рдЧрд┐ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ рд╕реЗрд╡рд╛ рд╣реЛред рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд▓рдХреНрд╖реНрдп рдкрд░рдореНрдкрд░рд╛рдЧрдд рд░реЗрдЯреНрд░реЛ рдЦреЗрд▓рд╣рд░реВрдорд╛ рд╕рдмреИрднрдиреНрджрд╛ рд╕рд╣рдЬ рдЧреЗрдорд┐рдЩ рдЕрдиреБрднрд╡ рд▓реНрдпрд╛рдЙрдиреБ рд░ рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░ рдердкреНрдиреБ рд╣реЛред
рддрдкрд╛рдИрдВ рдпрд╣рд╛рдБ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрд╛рд░реЗ рдердк рдЬрд╛рдиреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: https://github.com/giongto35/cloud-game.

CloudRetro рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛

CloudRetro рд▓реЗ рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩрдХреЛ рд╢рдХреНрддрд┐ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рд░реЗрдЯреНрд░реЛ рдЦреЗрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдзреЗрд░реИ рдЕрджреНрд╡рд┐рддреАрдп рдЧреЗрдорд┐рдЩ рдЕрдиреБрднрд╡рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

  • рдЦреЗрд▓рдХреЛ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА
    • рдкреГрд╖реНрда рдЦреЛрд▓реНрджрд╛ рддрддреНрдХрд╛рд▓ рдкреНрд▓реЗрдмреНрдпрд╛рдХ; рдХреБрдиреИ рдбрд╛рдЙрдирд▓реЛрдб рд╡рд╛ рд╕реНрдерд╛рдкрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдЫреИрди
    • рдореЛрдмрд╛рдЗрд▓ рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫ, рддреНрдпрд╕реИрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЪрд▓рд╛рдЙрди рдХреБрдиреИ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди

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

    WebRTC рдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ: p2p, рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░, рд╢реВрдиреНрдп рд╡рд┐рд▓рдореНрдмрддрд╛
    рд╡рд┐рднрд┐рдиреНрди рдпрдиреНрддреНрд░рд╣рд░реВрдорд╛ рдЕрдирд▓рд╛рдЗрди рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░ рдЦреЗрд▓рдХреЛ рдбреЗрдореЛ рд╕рдВрд╕реНрдХрд░рдг

    рдЖрдзрд╛рд░рднреВрдд рд╕рдВрд░рдЪрдирд╛

    рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рд░ рдкреНрд░рд╡рд┐рдзрд┐ рд╕реНрдЯреНрдпрд╛рдХ

    рддрд▓ рдореИрд▓реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐ рд╕реЗрдЯ рдЧрд░реЗрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВрдХреЛ рд╕реВрдЪреА рдЫред

    1. рдПрдХ рдЦреЗрд▓рд╛рдбреА
    рдпреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдпрд╣рд╛рдБ рдзреЗрд░реИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд╡рд╛ рд╕реНрдкрд╖реНрдЯ рджреЗрдЦрд┐рдБрджреИрди, рддрд░ рдпреЛ рдореЗрд░реЛ рдкреНрд░рдореБрдЦ рдЯреЗрдХрд╡реЗрд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рд╣реЛ, рдпрд╕рд▓реЗ рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩрд▓рд╛рдИ рд╕рдореНрднрд╡ рднрдПрд╕рдореНрдо рдкрд░рдореНрдкрд░рд╛рдЧрдд рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рд╕реЗрд╡рд╛рд╣рд░реВрдмрд╛рдЯ рдЯрд╛рдврд╛ рд░рд╣рди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпрджрд┐ рд╣рд╛рдореА рдПрдХрд▓-рдЦреЗрд▓рд╛рдбреА рдЦреЗрд▓рдорд╛ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдЧрд░реНрдЫреМрдВ рднрдиреЗ, рд╣рд╛рдореА рдХреЗрдиреНрджреНрд░реАрдХреГрдд рд╕рд░реНрднрд░ рд╡рд╛ CDN рдмрд╛рдЯ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдЙрди рд╕рдХреНрдЫреМрдВ рдХрд┐рдирднрдиреЗ рд╣рд╛рдореАрд▓реЗ рдЬрдирддрд╛рдорд╛ рд╕реНрдЯреНрд░рд┐рдо рдЧрд░реНрдиреБ рдкрд░реНрджреИрдиред рд╕рд┐рдЩреНрдХ рд╕рд░реНрднрд░рдорд╛ рд╕реНрдЯреНрд░рд┐рдорд╣рд░реВ рдЕрдкрд▓реЛрдб рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛ рд╡рд╛ рдХреЗрдиреНрджреНрд░реАрдХреГрдд рд╡реЗрдмрд╕рдХреЗрдЯ рд╕рд░реНрднрд░рдорд╛ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдкрд╛рд╕ рдЧрд░реНрдиреБрдХреЛ рд╕рдЯреНрдЯрд╛, рд╕реЗрд╡рд╛ рд╕реНрдЯреНрд░рд┐рдорд╣рд░реВ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓рд╛рдИ рдкрд┐рдпрд░-рдЯреБ-рдкрд┐рдпрд░ рд╡реЗрдмрдЖрд░рдЯреАрд╕реА рдЬрдбрд╛рди рдорд╛рд░реНрдлрдд рд╕рд┐рдзреИ рдбреЗрд▓рд┐рднрд░ рдЧрд░рд┐рдиреНрдЫред

    2. рдХрдо рд╡рд┐рд▓рдореНрдмрддрд╛ рдорд┐рдбрд┐рдпрд╛ рд╕реНрдЯреНрд░рд┐рдо
    Stadia рдХреЛ рдмрд╛рд░реЗрдорд╛ рдкрдвреНрджреИ, рдо рдкреНрд░рд╛рдп: рдХреЗрд╣рд┐ рд▓реЗрдЦрд╣рд░реВрдорд╛ рдЙрд▓реНрд▓реЗрдЦрд┐рдд WebRTC рджреЗрдЦреНрдЫреБред рдореИрд▓реЗ рдорд╣рд╕реБрд╕ рдЧрд░реЗрдВ рдХрд┐ WebRTC рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рд╡рд┐рдзрд┐ рд╣реЛ рд░ рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩрдорд╛ рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдЫред WebRTC рдПрдЙрдЯрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛ рдЬрд╕рд▓реЗ рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд░рд╣рд░реВ рд░ рдореЛрдмрд╛рдЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓рд╛рдИ рд╕рд░рд▓ API рдорд╛рд░реНрдлрдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ-рд╕рдордп рд╕рдЮреНрдЪрд╛рд░ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдпрд╕рд▓реЗ рдкрд┐рдпрд░-рдЯреБ-рдкрд┐рдпрд░ рдЬрдбрд╛рди рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рдорд┐рдбрд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ рдЧрд░рд┐рдПрдХреЛ рдЫ, рд░ VP8 рд░ H264 рдЬрд╕реНрддрд╛ рдорд╛рдирдХ рдХреЛрдбреЗрдХрд╣рд░реВ рдирд┐рд░реНрдорд┐рдд рдЫрдиреНред

    рдореИрд▓реЗ рдЙрдЪреНрдЪ рдЧреБрдгрд╕реНрддрд░рдХреЛ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХрд╛рдпрдо рд░рд╛рдЦреНрдиреЗ рднрдиреНрджрд╛ рд░рд╛рдореНрд░реЛ рд╕рдореНрднрд╛рд╡рд┐рдд рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрди рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджрд┐рдПрдБред рдПрд▓реНрдЧреЛрд░рд┐рджрдордорд╛ рдХреЗрд╣реА рд╣рд╛рдирд┐рд╣рд░реВ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдЫрдиреНред Google Stadia рд╕рдБрдЧ рд╕рд░реНрднрд░рдорд╛ рдЫрд╡рд┐рдХреЛ рдЖрдХрд╛рд░ рдШрдЯрд╛рдЙрдиреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЪрд░рдг рдЫ, рд░ рд╕рд╛рдереАрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рд╕рд╛рд░рдг рдЧрд░реНрдиреБ рдЕрдШрд┐ рдлреНрд░реЗрдорд╣рд░реВрд▓рд╛рдИ рдЙрдЪреНрдЪ рдЧреБрдгрд╕реНрддрд░рдорд╛ рдорд╛рдерд┐ рдмрдврд╛рдЗрдиреНрдЫред

    3. рднреМрдЧреЛрд▓рд┐рдХ рдорд╛рд░реНрдЧ рд╕рдВрдЧ рд╡рд┐рддрд░рд┐рдд рдкреВрд░реНрд╡рд╛рдзрд╛рд░
    рдХрдореНрдкреНрд░реЗрд╕рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд░ рдХреЛрдб рдЬрддрд┐рд╕реБрдХреИ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬ рдЧрд░рд┐рдПрдХреЛ рднрдП рддрд╛рдкрдирд┐ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдЭреИ рдкрдирд┐ рдирд┐рд░реНрдгрд╛рдпрдХ рдХрд╛рд░рдХ рд╣реЛ рдЬрд╕рд▓реЗ рд╡рд┐рд▓рдореНрдмрддрд╛рдорд╛ рд╕рдмреИрднрдиреНрджрд╛ рдмрдвреА рдпреЛрдЧрджрд╛рди рджрд┐рдиреНрдЫред рд░рд╛рдЙрдиреНрдб-рдЯреНрд░рд┐рдк рдЯрд╛рдЗрдо (RTT) рдХрдо рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рдирдЬрд┐рдХрдХреЛ рд╕рд░реНрднрд░ рдЬреЛрдбреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рдорд╛ рд╕рдВрдпрдиреНрддреНрд░ рд╣реБрдиреБрдкрд░реНрдЫред рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рдорд╛ 1 рд╕рдВрдпреЛрдЬрдХ рд░ рдзреЗрд░реИ рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рд╕рд░реНрднрд░рд╣рд░реВ рд╡рд┐рд╢реНрд╡рднрд░ рд╡рд┐рддрд░рд┐рдд рд╣реБрдиреБрдкрд░реНрдЫ: US рдкрд╢реНрдЪрд┐рдо, US рдкреВрд░реНрд╡, рдпреВрд░реЛрдк, рд╕рд┐рдВрдЧрд╛рдкреБрд░, рдЪреАрдиред рд╕рдмреИ рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рд╕рд░реНрднрд░рд╣рд░реВ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЕрд▓рдЧ рд╣реБрдиреБрдкрд░реНрдЫред рд╕рд░реНрднрд░рд▓реЗ рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рд╕рд╛рдореЗрд▓ рд╣реБрдБрджрд╛ рд╡рд╛ рдЫреЛрдбреНрджрд╛ рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдпрд╕рдХреЛ рд╡рд┐рддрд░рдг рд╕рдорд╛рдпреЛрдЬрди рдЧрд░реНрди рд╕рдХреНрдЫред рдпрд╕рд░реА, рдареВрд▓реЛ рдЯреНрд░рд╛рдлрд┐рдХрдХреЛ рд╕рд╛рде, рдердк рд╕рд░реНрднрд░рд╣рд░реВ рдердкреНрджрд╛ рддреЗрд░реНрд╕реЛ рд╕реНрдХреЗрд▓рд┐рдВрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

    4. рдмреНрд░рд╛рдЙрдЬрд░ рдЕрдиреБрдХреВрд▓рддрд╛
    рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ рд╕рдмреИрднрдиреНрджрд╛ рд░рд╛рдореНрд░реЛ рд╣реБрдиреНрдЫ рдЬрдм рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдмрд╛рдЯ рдХрдореНрддрд┐рдорд╛ рдЪрд╛рд╣рд┐рдиреНрдЫред рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдЪрд▓рд╛рдЙрди рд╕рдореНрднрд╡ рдЫред рдмреНрд░рд╛рдЙрдЬрд░рд╣рд░реВрд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рд╕рдлреНрдЯрд╡реЗрдпрд░ рд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдирдмрд╛рдЯ рдмрдЪрд╛рдПрд░ рдЧреЗрдорд┐рдЩ рдЕрдиреБрднрд╡рд▓рд╛рдИ рд╕рдХреЗрд╕рдореНрдо рд╕рд╣рдЬ рдмрдирд╛рдЙрди рдорджреНрджрдд рдЧрд░реНрдЫред рдмреНрд░рд╛рдЙрдЬрд░рд╣рд░реВрд▓реЗ рдореЛрдмрд╛рдЗрд▓ рд░ рдбреЗрд╕реНрдХрдЯрдк рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдмреАрдЪ рдХреНрд░рд╕-рдкреНрд▓реЗрдЯрдлрд░реНрдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред рд╕реМрднрд╛рдЧреНрдпрд╡рд╢, WebRTC рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд░рд╣рд░реВрдорд╛ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рд╕рдорд░реНрдерд┐рдд рдЫред

    5. рдЦреЗрд▓ рдЗрдиреНрдЯрд░рдлреЗрд╕ рд░ рд╕реЗрд╡рд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рднрд╛рдЬрди
    рдо рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ рд╕реЗрд╡рд╛рд▓рд╛рдИ рдкреНрд▓реЗрдЯрдлрд░реНрдордХреЛ рд░реВрдкрдорд╛ рд╣реЗрд░реНрдЫреБред рд╕рдмреИрдЬрдирд╛ рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдХреБрдиреИ рдкрдирд┐ рдХреБрд░рд╛ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрдкрд░реНрдЫред рдЕрд╣рд┐рд▓реЗ рдПрдХреАрдХреГрдд рднрдПрдБ LibRetro рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ рд╕реЗрд╡рд╛рдХреЛ рд╕рд╛рде рдХрд┐рдирднрдиреЗ LibRetro рд▓реЗ SNES, GBA, PS рдЬрд╕реНрддрд╛ рд░реЗрдЯреНрд░реЛ рдЦреЗрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕реБрдиреНрджрд░ рдЧреЗрдо рдЗрдореБрд▓реЗрдЯрд░ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред

    6. рдЦреЗрд▓рд╕рдБрдЧ рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░, рдХреНрд░рд╛рдЙрдб рдкреНрд▓реЗ рд░ рдмрд╛рд╣реНрдп рд▓рд┐рдЩреНрдХрд┐рдЩ (рдбреАрдк-рд▓рд┐рдЩреНрдХ) рдХреЛ рд▓рд╛рдЧрд┐ рдХреЛрдард╛
    рдХреНрд▓рд╛рдЙрдбрд░реЗрдЯреНрд░реЛрд▓реЗ рдзреЗрд░реИ рдирдпрд╛рдБ рдЧреЗрдордкреНрд▓реЗрд╣рд░реВрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ рдЬрд╕реНрддреИ рдХреНрд░рд╛рдЙрдбрдкреНрд▓реЗ рд░ рд░реЗрдЯреНрд░реЛ рдЦреЗрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрдирд▓рд╛рдЗрди рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░ред рдпрджрд┐ рдзреЗрд░реИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдлрд░рдХ-рдлрд░рдХ рдХрдореНрдкреНрдпреБрдЯрд░рд╣рд░реВрдорд╛ рдПрдЙрдЯреИ рдбреАрдк-рд▓рд┐рдЩреНрдХ рдЦреЛрд▓реНрдЫрдиреН рднрдиреЗ, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдПрдЙрдЯреИ рдЦреЗрд▓ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рджреЗрдЦреНрдиреЗрдЫрдиреН рд░ рдпрд╕рдорд╛ рд╕рд╛рдореЗрд▓ рд╣реБрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫрдиреНред

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

    7. рддреЗрд░реНрд╕реЛ рдорд╛рдкрди
    рдЖрдЬрдХрд▓ рдХреБрдиреИ рдкрдирд┐ SAAS рдЬрд╕реНрддреИ, рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ рддреЗрд░реНрд╕реЛ рд░реВрдкрдорд╛ рдорд╛рдкрдирдпреЛрдЧреНрдп рд╣реБрди рдбрд┐рдЬрд╛рдЗрди рд╣реБрдиреБрдкрд░реНрдЫред рд╕рдВрдпреЛрдЬрдХ-рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдбрд┐рдЬрд╛рдЗрдирд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдердк рдЯреНрд░рд╛рдлрд┐рдХ рд╕реЗрд╡рд╛ рджрд┐рди рдердк рдХрд╛рдорджрд╛рд░рд╣рд░реВ рдердкреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

    8. рдПрдЙрдЯрд╛ рдХреНрд▓рд╛рдЙрдбрдорд╛ рдХреБрдиреИ рдЬрдбрд╛рди рдЫреИрди
    рдХреНрд▓рд╛рдЙрдбрд░реЗрдЯреНрд░реЛрдХреЛ рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░рдХрд╛ рд▓рд╛рдЧрд┐ рд╡рд┐рднрд┐рдиреНрди рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рдпрдХрд╣рд░реВ (рдбрд┐рдЬрд┐рдЯрд▓ рдУрд╢рди, рдЕрд▓рд┐рдмрд╛рдмрд╛, рдХрд╕реНрдЯрдо рдкреНрд░рджрд╛рдпрдХ) рдорд╛ рд╣реЛрд╕реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫред рдо рдкреВрд░реНрд╡рд╛рдзрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд╕рдХреНрд╖рдо рдЧрд░реНрджрдЫреБ рд░ рдПрдХрд▓ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рдпрдХрдорд╛ рд▓рдХ рд╣реБрдирдмрд╛рдЯ рдмрдЪреНрди рдмрд╛рд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдЫреБред рдпрд╕рд▓рд╛рдИ WebRTC рдорд╛ NAT Traversal рд╕рдБрдЧ рд╕рдВрдпреЛрдЬрди рдЧрд░реЗрд░, рд╣рд╛рдореА рдХреБрдиреИ рдкрдирд┐ рдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЗрдЯрдлрд░реНрдо рд░ рдХреБрдиреИ рдкрдирд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХрд╛ рдореЗрд╕рд┐рдирд╣рд░реВрдорд╛ CloudRetro рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд▓рдЪрд┐рд▓реЛрдкрди рдкрд╛рдЙрди рд╕рдХреНрдЫреМрдВред

    рд╡рд╛рд╕реНрддреБ рдбрд┐рдЬрд╛рдЗрди

    рдХрд╛рдорджрд╛рд░: (рд╡рд╛ рдорд╛рдерд┐ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рд╕рд░реНрднрд░) рдЦреЗрд▓рд╣рд░реВ рдЧреБрдгрд╛ рдЧрд░реНрджрдЫ, рдПрдиреНрдХреЛрдбрд┐рдЩ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЪрд▓рд╛рдЙрдБрдЫ, рд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдПрдиреНрдХреЛрдб рдЧрд░рд┐рдПрдХреЛ рдорд┐рдбрд┐рдпрд╛ рд╕реНрдЯреНрд░рд┐рдо рдЧрд░реНрджрдЫред рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╕рдВрд╕рд╛рд░рднрд░рд┐ рд╡рд┐рддрд░рд┐рдд рдЫрдиреН, рд░ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рд▓реЗ рдПрдХреИ рд╕рд╛рде рдзреЗрд░реИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕рддреНрд░рд╣рд░реВ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред

    рд╕рдВрдпреЛрдЬрдХ: рд╕реНрдЯреНрд░рд┐рдорд┐рдЩрдХрд╛ рд▓рд╛рдЧрд┐ рд╕рдмреИрднрдиреНрджрд╛ рдЙрдкрдпреБрдХреНрдд рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рд╕рдБрдЧ рдирдпрд╛рдБ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓рд╛рдИ рдЬреЛрдбрд╛ рдмрдирд╛рдЙрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫред рд╕рдВрдпреЛрдЬрдХрд▓реЗ WebSocket рдорд╛рд░реНрдлрдд рдХрд╛рдорджрд╛рд░рд╣рд░реВрд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдЫред

    рдЦреЗрд▓ рд░рд╛рдЬреНрдп рднрдгреНрдбрд╛рд░рдг: рд╕рдмреИ рдЦреЗрд▓ рд░рд╛рдЬреНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХреЗрдиреНрджреНрд░реАрдп рд░рд┐рдореЛрдЯ рднрдгреНрдбрд╛рд░рдгред рдпреЛ рднрдгреНрдбрд╛рд░рдгрд▓реЗ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ рдЬрд╕реНрддреИ рд░рд┐рдореЛрдЯ рдмрдЪрдд/рд▓реЛрдбред

    WebRTC рдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ: p2p, рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░, рд╢реВрдиреНрдп рд╡рд┐рд▓рдореНрдмрддрд╛
    CloudRetro рдХреЛ рд╢реАрд░реНрд╖-рд╕реНрддрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛

    рдЕрдиреБрдХреВрд▓рди рд▓рд┐рдкрд┐

    рдЬрдм рдирдпрд╛рдБ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рддрд▓рдХреЛ рдЪрд┐рддреНрд░рдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЪрд░рдг рез рд░ реи рдорд╛ рдХреНрд▓рд╛рдЙрдбрд░реЗрдЯреНрд░реЛ рдЦреЛрд▓реНрдЫ, рдЙрдкрд▓рдмреНрдз рдХрд╛рдорджрд╛рд░рд╣рд░реВрдХреЛ рд╕реВрдЪреАрд╕рд╣рд┐рдд рд╕рдВрдпреЛрдЬрдХрд▓рд╛рдИ рдкрд╣рд┐рд▓реЛ рдкреГрд╖реНрдардорд╛ рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдиреНрдЫред рдпрд╕ рдкрдЫрд┐, рдЪрд░рдг 1 рдорд╛ рдЧреНрд░рд╛рд╣рдХрд▓реЗ HTTP рдкрд┐рдВрдЧ рдЕрдиреБрд░реЛрдз рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдмреИ рдЙрдореНрдореЗрджреНрд╡рд╛рд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдврд┐рд▓рд╛рдЗ рдЧрдгрдирд╛ рдЧрд░реНрджрдЫред рдврд┐рд▓рд╛рдЗрдХреЛ рдпреЛ рд╕реВрдЪреА рддреНрдпрд╕рдкрдЫрд┐ рд╕рдВрдпреЛрдЬрдХрд▓рд╛рдИ рдлрд┐рд░реНрддрд╛ рдкрдард╛рдЗрдиреНрдЫ рддрд╛рдХрд┐ рдпрд╕рд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓рд╛рдИ рд╕реЗрд╡рд╛ рджрд┐рди рд╕рдмреИрднрдиреНрджрд╛ рдЙрдкрдпреБрдХреНрдд рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рд╕рдХреНрдЫред рдЪрд░рдг 2 рддрд▓ рдЦреЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫред рдПрдХ WebRTC рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рдЬрдбрд╛рди рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд░ рддреЛрдХрд┐рдПрдХреЛ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдмреАрдЪ рд╕реНрдерд╛рдкрд┐рдд рдЫред
    WebRTC рдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ: p2p, рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░, рд╢реВрдиреНрдп рд╡рд┐рд▓рдореНрдмрддрд╛
    рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗрдкрдЫрд┐ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд▓рд┐рдкрд┐

    рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рднрд┐рддреНрд░ рдХреЗ рдЫ

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

    WebRTC рдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ: p2p, рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░, рд╢реВрдиреНрдп рд╡рд┐рд▓рдореНрдмрддрд╛
    рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдЕрд╡рдпрд╡рд╣рд░реВрдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛

    рдореБрдЦреНрдп рдШрдЯрдХ:

    • WebRTC: рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХрдореНрдкреЛрдиреЗрдиреНрдЯ рдЬрд╕рд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рдЗрдирдкреБрдЯ рд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрджрдЫ рд░ рд╕рд░реНрднрд░рдмрд╛рдЯ рдПрдиреНрдХреЛрдбреЗрдб рдорд┐рдбрд┐рдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрджрдЫред
    • рдЦреЗрд▓ рдЗрдореБрд▓реЗрдЯрд░: рдЦреЗрд▓ рдШрдЯрдХред Libretro рдкреБрд╕реНрддрдХрд╛рд▓рдпрдХреЛ рд▓рд╛рдЧрд┐ рдзрдиреНрдпрд╡рд╛рдж, рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рд╕рдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднрд┐рддреНрд░ рдЦреЗрд▓ рдЪрд▓рд╛рдЙрди рд╕рдХреНрд╖рдо рдЫ рд░ рдорд┐рдбрд┐рдпрд╛ рд░ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдо рдЖрдиреНрддрд░рд┐рдХ рд░реВрдкрдорд╛ рдЕрд╡рд░реЛрдз рдЧрд░реНрджрдЫред
    • рдЗрди-рдЧреЗрдо рдлреНрд░реЗрдорд╣рд░реВ рдХреНрдпрд╛рдкреНрдЪрд░ рдЧрд░реА рдЗрдиреНрдХреЛрдбрд░рдорд╛ рдкрдард╛рдЗрдиреНрдЫред
    • рдЫрд╡рд┐/рдЕрдбрд┐рдпреЛ рдЗрдиреНрдХреЛрдбрд░: рдПрдХ рдЗрдиреНрдХреЛрдбрд┐рдЩ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЬрд╕рд▓реЗ рдорд┐рдбрд┐рдпрд╛ рдлреНрд░реЗрдорд╣рд░реВ рд▓рд┐рдиреНрдЫ, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреГрд╖реНрдарднреВрдорд┐рдорд╛ рд╕рдЩреНрдХреЗрдд рдЧрд░реНрдЫ, рд░ рдЗрдиреНрдХреЛрдб рдЧрд░рд┐рдПрдХрд╛ рдЫрд╡рд┐рд╣рд░реВ/рдЕрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрджрдЫред

    рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

    рдХреНрд▓рд╛рдЙрдбрд░реЗрдЯреНрд░реЛ WebRTC рдорд╛ рдпрд╕рдХреЛ рдмреНрдпрд╛рдХрдмреЛрди рдЯреЗрдХреНрдиреЛрд▓реЛрдЬреАрдХреЛ рд░реВрдкрдорд╛ рдирд┐рд░реНрднрд░ рдЫ, рддреНрдпрд╕реИрд▓реЗ Golang рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд╡рд┐рд╡рд░рдгрдорд╛ рдбреБрдмреНрди рдЕрдШрд┐, рдореИрд▓реЗ WebRTC рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВред рдпреЛ рдЕрдЪрдореНрдордХреЛ рдЯреЗрдХреНрдиреЛрд▓реЛрдЬреА рд╣реЛ рдЬрд╕рд▓реЗ рдорд▓рд╛рдИ рдбрд╛рдЯрд╛ рд╕реНрдЯреНрд░рд┐рдорд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдк-рд╕реЗрдХреЗрдиреНрдб рд╡рд┐рд▓рдореНрдмрддрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдирдорд╛ рдзреЗрд░реИ рдорджреНрджрдд рдЧрд░реЗрдХреЛ рдЫред

    WebRTC

    WebRTC рд╕рд░рд▓ API рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдиреЗрдЯрд┐рдн рдореЛрдмрд╛рдЗрд▓ рдПрдкрд╣рд░реВ рд░ рдмреНрд░рд╛рдЙрдЬрд░рд╣рд░реВрдорд╛ рдЙрдЪреНрдЪ-рдЧреБрдгрд╕реНрддрд░рдХреЛ рдкрд┐рдпрд░-рдЯреБ-рдкрд┐рдпрд░ рдЬрдбрд╛рдирд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рд╣реЛред

    NAT Traversal

    WebRTC рдпрд╕рдХреЛ NAT Traversal рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдХрд╛ рд▓рд╛рдЧрд┐ рдкрд░рд┐рдЪрд┐рдд рдЫред WebRTC рдкрд┐рдпрд░-рдЯреБ-рдкрд┐рдпрд░ рд╕рдЮреНрдЪрд╛рд░рдХреЛ рд▓рд╛рдЧрд┐ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рд╣реЛред рдпрд╕рдХреЛ рд▓рдХреНрд╖реНрдп рднрдиреЗрдХреЛ рд╕рдмреИрднрдиреНрджрд╛ рдЙрдкрдпреБрдХреНрдд рд╕реАрдзрд╛ рдорд╛рд░реНрдЧ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреБ рд╣реЛ, NAT рдЧреЗрдЯрд╡реЗ рд░ рдлрд╛рдпрд░рд╡рд╛рд▓рд╣рд░реВрд▓рд╛рдИ рдкрд┐рдпрд░-рдЯреБ-рдкрд┐рдпрд░ рдХрдореНрдпреБрдирд┐рдХреЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ рднрдирд┐рдиреНрдЫред ICEред рдпрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдПрдХ рднрд╛рдЧрдХреЛ рд░реВрдкрдорд╛, WebRTC API рд▓реЗ STUN рд╕рд░реНрднрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддрдкрд╛рдИрдВрдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ IP рдареЗрдЧрд╛рдирд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫ рд░ рдпрд╕рд▓рд╛рдИ рд░рд┐рд▓реЗ рд╕рд░реНрднрд░рдорд╛ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрдЫ (рдЯрд░реНрди) рдЬрдм рдкреНрд░рддреНрдпрдХреНрд╖ рдЬрдбрд╛рди рд╕реНрдерд╛рдкрд┐рдд рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред

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

    рдкрд╣рд┐рд▓реЗ, рдо рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓рд╛рдИ рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ рдЦреЗрд▓ рд╡рд┐рддрд░рдг рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ рдкрд░рд┐рдгрдд рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдереЗрдВред рд╡рд┐рдЪрд╛рд░ рдЦреЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдЦреЗрд▓ рд░ рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рд╕реНрд░реЛрддрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗ рдерд┐рдпреЛред рд░ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдкреНрд░рджрд╛рдпрдХрд╣рд░реВрд╕рдБрдЧ рд╕реАрдзрд╛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдиреЗрдЫрдиреНред рдпрд╕ рд╡рд┐рдХреЗрдиреНрджреНрд░реАрдХреГрдд рддрд░рд┐рдХрд╛рдорд╛, рдХреНрд▓рд╛рдЙрдбрд░реЗрдЯреНрд░реЛ рддреЗрд╕реНрд░реЛ-рдкрдХреНрд╖ рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рд╕реНрд░реЛрддрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдЬрдбрд╛рди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рдврд╛рдБрдЪрд╛ рдорд╛рддреНрд░ рд╣реЛ, рдпрд╕рд▓рд╛рдИ рд╣реЛрд╕реНрдЯ рдирдЧрд░реНрджрд╛ рдпрд╕рд▓рд╛рдИ рдердк рдорд╛рдкрдирдпреЛрдЧреНрдп рдмрдирд╛рдЙрдБрдЫред рдпрд╣рд╛рдБ WebRTC NAT Traversal рдХреЛ рднреВрдорд┐рдХрд╛ рддреЗрд╕реНрд░реЛ-рдкрдХреНрд╖ рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рд╕реНрд░реЛрддрд╣рд░реВрдорд╛ рдкрд┐рдпрд░-рдЯреВ-рдкреАрдпрд░ рдЬрдбрд╛рди рдкреНрд░рд╛рд░рдореНрднрд┐рдХрддрд╛рд▓рд╛рдИ рд╕рд╣рдЬ рдмрдирд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ, рдЬрд╕рд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛рдХрд░реНрддрд╛рд▓рд╛рдИ рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрдБрдЫред

    рднрд┐рдбрд┐рдпреЛ рд╕рдЩреНрдХреБрдЪрди

    рднрд┐рдбрд┐рдпреЛ рдХрдореНрдкреНрд░реЗрд╕рди рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдХреЛ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рднрд╛рдЧ рд╣реЛ рд░ рдПрдХ рд╕рд╣рдЬ рдкреНрд░рд╡рд╛рд╣рдорд╛ рдзреЗрд░реИ рдпреЛрдЧрджрд╛рди рдЧрд░реНрджрдЫред VP8/H264 рднрд┐рдбрд┐рдпреЛ рдПрдиреНрдХреЛрдбрд┐рдЩрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╡рд░рдг рдЬрд╛рдиреНрди рдЖрд╡рд╢реНрдпрдХ рдирднрдП рдкрдирд┐, рдЕрд╡рдзрд╛рд░рдгрд╛рд╣рд░реВ рдмреБрдЭреНрдирд╛рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рднрд┐рдбрд┐рдпреЛ рдЧрддрд┐ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдмреБрдЭреНрди, рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдбрд┐рдмрдЧ рдЧрд░реНрди рд░ рд╡рд┐рд▓рдореНрдмрддрд╛ рд╕рдорд╛рдпреЛрдЬрди рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрди рд╕рдХреНрдЫред

    рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рд╕реЗрд╡рд╛рдХреЛ рд▓рд╛рдЧрд┐ рднрд┐рдбрд┐рдпреЛ рдХрдореНрдкреНрд░реЗрд╕ рдЧрд░реНрди рдЪреБрдиреМрддреАрдкреВрд░реНрдг рдЫ рдХрд┐рдирднрдиреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд▓реЗ рдХреБрд▓ рдПрдиреНрдХреЛрдбрд┐рдЩ рд╕рдордп + рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рд╕рд╛рд░рдг рд╕рдордп + рдбрд┐рдХреЛрдбрд┐рдЩ рд╕рдордп рд╕рдХреЗрд╕рдореНрдо рдХрдо рдЫ рднрдиреЗрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрдкрд░реНрдЫред рдердк рд░реВрдкрдорд╛, рдХреЛрдбрд┐рдЩ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рд░рдиреНрддрд░ рд░ рдирд┐рд░рдиреНрддрд░ рд╣реБрдиреБрдкрд░реНрдЫред рдХреЗрд╣реА рдПрдиреНрдХреЛрдбрд┐рдЩ рдЯреНрд░реЗрдбрдЕрдлрд╣рд░реВ рд▓рд╛рдЧреВ рд╣реБрдБрджреИрдирдиреНтАФрдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рд╕рд╛рдирд╛ рдлрд╛рдЗрд▓ рд╕рд╛рдЗрдЬрд╣рд░реВ рд░ рдбрд┐рдХреЛрдбрд┐рдЩ рд╕рдордпрд╣рд░реВрдорд╛ рд▓рд╛рдореЛ рд╕рдордп рд╕рдЩреНрдХреЗрддрди рдЧрд░реНрди рд╡рд╛ рдЕрд╕рдВрдЧрдд рд╕рдЩреНрдХреБрдЪрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрджреИрдиреМрдВред

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

    WebRTC рдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ: p2p, рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░, рд╢реВрдиреНрдп рд╡рд┐рд▓рдореНрдмрддрд╛
    рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛ Pacman рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рднрд┐рдбрд┐рдпреЛ рдлреНрд░реЗрдорд╣рд░реВрдХреЛ рддреБрд▓рдирд╛

    рдЕрдбрд┐рдпреЛ рдХрдореНрдкреНрд░реЗрд╕рди

    рддреНрдпрд╕реНрддреИ рдЧрд░реА, рдЕрдбрд┐рдпреЛ рдХрдореНрдкреНрд░реЗрд╕рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдорд▓реЗ рдбреЗрдЯрд╛ рдЫреЛрдбреНрдЫ рдЬреБрди рдорд╛рдирд┐рд╕рд▓реЗ рдмреБрдЭреНрди рд╕рдХреНрджреИрдиред Opus рд╣рд╛рд▓ рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рджрд░реНрд╢рди рдЕрдбрд┐рдпреЛ рдХреЛрдбреЗрдХ рд╣реЛред рдпреЛ рдЖрд░рдЯреАрдкреА (рд░рд┐рдпрд▓ рдЯрд╛рдЗрдо рдЯреНрд░рд╛рдиреНрд╕рдкреЛрд░реНрдЯ рдкреНрд░реЛрдЯреЛрдХрд▓) рдЬрд╕реНрддрд╛ рдЕрд░реНрдбрд░ рдЧрд░рд┐рдПрдХреЛ рдбрд╛рдЯрд╛рдЧреНрд░рд╛рдо рдкреНрд░реЛрдЯреЛрдХрд▓рдорд╛ рдЕрдбрд┐рдпреЛ рддрд░рдВрдЧ рдкреНрд░рд╕рд╛рд░рдг рдЧрд░реНрди рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рд╣реЛред рдпрд╕рдХреЛ рд╡рд┐рд▓рдореНрдмрддрд╛ mp3 рд░ aac рднрдиреНрджрд╛ рдХрдо рдЫ, рд░ рдЧреБрдгрд╕реНрддрд░ рдЙрдЪреНрдЪ рдЫред рд╡рд┐рд▓рдореНрдмрддрд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ 5 ~ 66,5ms рдХреЛ рдЖрд╕рдкрд╛рд╕ рд╣реБрдиреНрдЫред

    Pion, Golang рдорд╛ WebRTC

    рдкреНрдпрд╛рджрд╛ WebRTC Golang рдорд╛ рд▓реНрдпрд╛рдЙрдиреЗ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛред рдиреЗрдЯрд┐рдн C++ WebRTC рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реНрдпрд╛рдкрд┐рдЩрдХреЛ рд╕рдЯреНрдЯрд╛, Pion рд░рд╛рдореНрд░реЛ рдкреНрд░рджрд░реНрд╢рди, Go рдПрдХреАрдХрд░рдг, рд░ WebRTC рдкреНрд░реЛрдЯреЛрдХрд▓рд╣рд░реВрдорд╛ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдиреНрддреНрд░рдгрдХреЛ рд╕рд╛рде WebRTC рдХреЛ рдПрдЙрдЯрд╛ рдиреЗрдЯрд┐рдн Golang рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛред

    рдкреБрд╕реНрддрдХрд╛рд▓рдпрд▓реЗ рдЙрдк-рд╕реЗрдХреЗрдиреНрдб рд╡рд┐рд▓рдореНрдмрддрд╛рдХреЛ рд╕рд╛рде рдзреЗрд░реИ рдЙрддреНрдХреГрд╖реНрдЯ рдмрд┐рд▓реНрдЯ-рдЗрдирд╣рд░реВрдХреЛ рд╕рд╛рде рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рд╕рдХреНрд╖рдо рдЧрд░реНрджрдЫред рдпрд╕рдХреЛ STUN, DTLS, SCTP, рдЖрджрд┐ рдХреЛ рдЖрдлреНрдиреИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЫред рд░ QUIC рд░ WebAssembly рдХреЛ рд╕рд╛рде рдХреЗрд╣рд┐ рдкреНрд░рдпреЛрдЧрд╣рд░реВред рдпреЛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдлреИрдорд╛ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рдЧрдЬрд╛рдд, рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЯреЛрдХрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд░ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдХреЛ рд╕рд╛рде рдПрдХ рд╕рд╛рдБрдЪреНрдЪреИ рд░рд╛рдореНрд░реЛ рд╢рд┐рдХреНрд╖рд╛ рд╕реНрд░реЛрдд рд╣реЛред

    Pion рд╕рдореБрджрд╛рдп, рдПрдХ рдзреЗрд░реИ рднрд╛рд╡реБрдХ рд╕рд┐рд░реНрдЬрдирд╛рдХрд░реНрддрд╛рдХреЛ рдиреЗрддреГрддреНрд╡рдорд╛, WebRTC рдХреЛ рдмрд╛рд░реЗрдорд╛ рдзреЗрд░реИ рдЧреБрдгрд╕реНрддрд░реАрдп рдЫрд▓рдлрд▓рд╣рд░реВ рднрдИ рдзреЗрд░реИ рдЬреАрд╡рдиреНрдд рдЫред рдпрджрд┐ рддрдкрд╛рдЗрдБ рдпрд╕ рдкреНрд░рд╡рд┐рдзрд┐рдорд╛ рд░реБрдЪрд┐ рд░рд╛рдЦреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рд╕рд╛рдореЗрд▓ рд╣реБрдиреБрд╣реЛрд╕реН http://pion.ly/slack - рддрдкрд╛рдИрдВрд▓реЗ рдзреЗрд░реИ рдирдпрд╛рдБ рдХреБрд░рд╛рд╣рд░реВ рд╕рд┐рдХреНрдиреБрд╣реБрдиреЗрдЫред

    Golang рдорд╛ CloudRetro рд▓реЗрдЦреНрджреИ

    WebRTC рдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ: p2p, рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░, рд╢реВрдиреНрдп рд╡рд┐рд▓рдореНрдмрддрд╛
    рдЧреЛ рдорд╛ рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

    рдХрд╛рд░реНрдпрдорд╛ рдЪреНрдпрд╛рдирд▓рд╣рд░реВ рдЬрд╛рдиреБрд╣реЛрд╕реН

    Go рдХреЛ рд╕реБрдиреНрджрд░ рдЪреНрдпрд╛рдирд▓ рдбрд┐рдЬрд╛рдЗрди рдХреЛ рд▓рд╛рдЧреА рдзрдиреНрдпрд╡рд╛рдж, рдШрдЯрдирд╛ рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рд░ рдПрдХрд░реВрдкрддрд╛ рдХреЛ рд╕рдорд╕реНрдпрд╛рд╣рд░реБ рд▓рд╛рдИ рдзреЗрд░реИ рд╕рд░рд▓реАрдХреГрдд рдЧрд░рд┐рдПрдХреЛ рдЫред рд░реЗрдЦрд╛рдЪрд┐рддреНрд░рдорд╛ рдЬрд╕реНрддреИ, рд╡рд┐рднрд┐рдиреНрди GoRoutineрд╣рд░реВрдорд╛ рд╕рдорд╛рдирд╛рдиреНрддрд░рдорд╛ рдЪрд▓реНрдиреЗ рдмрд╣реБ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдЫрдиреНред рдкреНрд░рддреНрдпреЗрдХ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд▓реЗ рдпрд╕рдХреЛ рд░рд╛рдЬреНрдп рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЧрд░реНрджрдЫ рд░ рдЪреНрдпрд╛рдирд▓рд╣рд░реВ рдорд╛рд░реНрдлрдд рд╕рдЮреНрдЪрд╛рд░ рдЧрд░реНрджрдЫред рдЧреЛрд▓рд╛рдЩреНрдЧрдХреЛ рдЪрдпрдирд╛рддреНрдордХ рджрд╛рд╡реАрд▓реЗ рдЦреЗрд▓рдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рдПрдХ рдкрд░рдорд╛рдгреБ рдШрдЯрдирд╛рд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рдмрд╛рдзреНрдп рдкрд╛рд░реНрдЫ (рдЦреЗрд▓ рдЯрд┐рдХ)ред рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рдбрд┐рдЬрд╛рдЗрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдиреИ рд▓рдХ рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЬрдм рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓реЗ рдмрдЪрдд рдЧрд░реНрдЫ, рдЦреЗрд▓ рд╕реНрдерд┐рддрд┐рдХреЛ рдкреВрд░реНрдг рд╕реНрдиреНрдпрд╛рдкрд╕рдЯ рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреНрдЫред рдпреЛ рдЕрд╡рд╕реНрдерд╛ рдирд┐рд░рдиреНрддрд░ рд░рд╣рдиреБрдкрд░реНрдЫ, рдмрдЪрдд рдкреВрд░рд╛ рдирднрдПрд╕рдореНрдо рд▓рдЧ рдЗрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдкреНрд░рддреНрдпреЗрдХ рдЦреЗрд▓ рдЯрд┐рдХрдХреЛ рд╕рдордпрдорд╛, рдмреНрдпрд╛рдХрдЗрдиреНрдбрд▓реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд╛ рдЗрдирдкреБрдЯ рдЕрдкрд░реЗрд╢рди рдорд╛рддреНрд░ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди рд╕рдХреНрдЫ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдЙрдБрдЫред

    func (e *gameEmulator) gameUpdate() {
    for {
    	select {
    		case <-e.saveOperation:
    			e.saveGameState()
    		case key := <-e.input:
    			e.updateGameState(key)
    		case <-e.done:
    			e.close()
    			return
    	}
        }
    }

    рдлреНрдпрд╛рди-рдЗрди/рдлреНрдпрд╛рди-рдЖрдЙрдЯ

    рдпреЛ Golang рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрд░реЛ CrowdPlay рд░ рдмрд╣реБ тАЛтАЛрдЦреЗрд▓рд╛рдбреА рдкреНрд░рдпреЛрдЧ рдХреЗрд╕ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдлрд┐рдЯ рд╣реБрдиреНрдЫред рдпрд╕ рдврд╛рдБрдЪрд╛ рдкрдЫреНрдпрд╛рдЙрдБрджреИ, рдПрдХ рдХреЛрдард╛рдорд╛ рд╕рдмреИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯрд╣рд░реВ рдХреЗрдиреНрджреНрд░реАрдп рдкреНрд░рд╡реЗрд╢ рдЪреНрдпрд╛рдирд▓рдорд╛ рдмрдирд╛рдЗрдиреНрдЫред рдЦреЗрд▓ рдорд┐рдбрд┐рдпрд╛ рддреНрдпрд╕рдкрдЫрд┐ рдПрдЙрдЯреИ рдХреЛрдард╛рдорд╛ рд╕рдмреИ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рддреИрдирд╛рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рдпрд╕рд░реА, рд╣рд╛рдореА рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдзреЗрд░реИ рдЦреЗрд▓ рд╕рддреНрд░рд╣рд░реВ рдмреАрдЪ рдЦреЗрд▓ рд╕реНрдерд┐рддрд┐рдХреЛ рд╡рд┐рднрд╛рдЬрди рд╣рд╛рд╕рд┐рд▓ рдЧрд░реНрдЫреМрдВред

    WebRTC рдорд╛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ: p2p, рдорд▓реНрдЯрд┐рдкреНрд▓реЗрдпрд░, рд╢реВрдиреНрдп рд╡рд┐рд▓рдореНрдмрддрд╛
    рд╡рд┐рднрд┐рдиреНрди рд╕рддреНрд░рд╣рд░реВ рдмреАрдЪ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬреЗрд╕рди

    Golang рдХреЛ рдмреЗрдлрд╛рдЗрджрд╛

    рдЧреЛрд▓рд╛рдЩ рд╕рд┐рджреНрдз рдЫреИрдиред рдЪреНрдпрд╛рдирд▓ рдврд┐рд▓реЛ рдЫред рдмреНрд▓рдХрд┐рдЩрдХреЛ рддреБрд▓рдирд╛рдорд╛, рдЧреЛ рдЪреНрдпрд╛рдирд▓ рд╕рдорд╡рд░реНрддреА рд░ рдереНрд░реЗрдб рдЧрд░рд┐рдПрдХрд╛ рдШрдЯрдирд╛рд╣рд░реВ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рддрд░рд┐рдХрд╛ рд╣реЛ, рддрд░ рдЪреНрдпрд╛рдирд▓рд▓реЗ рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдЧрд░реНрджреИрдиред рдЪреНрдпрд╛рдирд▓ рдореБрдирд┐ рдЬрдЯрд┐рд▓ рдЕрд╡рд░реБрджреНрдз рддрд░реНрдХ рдЫред рддреНрдпрд╕реЛрднрдП рдореИрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛ рдХреЗрд╣реА рд╕рдорд╛рдпреЛрдЬрдирд╣рд░реВ рдЧрд░реЗрдВ, рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди рдЪреНрдпрд╛рдирд▓рд╣рд░реВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрджрд╛ рд▓рдХрд╣рд░реВ рд░ рдкрд░рдорд╛рдгреБ рдорд╛рдирд╣рд░реВ рдкреБрди: рд▓рд╛рдЧреВ рдЧрд░реНрджреИред

    рдердк рд░реВрдкрдорд╛, рдЧреЛрд▓рд╛рдЩрдорд╛ рдлреЛрд╣реЛрд░ рд╕рдЩреНрдХрд▓рдирдХрд░реНрддрд╛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЫ, рдЬрд╕рд▓реЗ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдВ рд╢рдВрдХрд╛рд╕реНрдкрдж рд░реВрдкрдорд╛ рд▓рд╛рдореЛ рдкрдЬрд╣рд░реВ рдирд┐рдореНрддреНрдпрд╛рдЙрдБрдЫред рдпрд╕рд▓реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ-рд╕рдордп рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдорд╛ рдзреЗрд░реИ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдЧрд░реНрджрдЫред

    рд╕реАрдЬреАрдУ

    рдкрд░рд┐рдпреЛрдЬрдирд╛рд▓реЗ рдорд┐рдбрд┐рдпрд╛ рдХрдореНрдкреНрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрд┐ рдЕрд╡рд╕реНрдерд┐рдд рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд Golang VP8/H264 рдкреБрд╕реНрддрдХрд╛рд▓рдп рд░ рдЦреЗрд▓ рдЗрдореБрд▓реЗрдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ Libretro рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдпреА рд╕рдмреИ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рдЧреЛ рдкреНрд░рдпреЛрдЧрдорд╛ C рдкреБрд╕реНрддрдХрд╛рд▓рдпрдХреЛ рд░реНрдпрд╛рдкрд░рд╣рд░реВ рдорд╛рддреНрд░ рд╣реБрдиреН рд╕реАрдЬреАрдУред рдХреЗрд╣реА рдмреЗрдлрд╛рдЗрджрд╛рд╣рд░реВ рд╕реВрдЪреАрдмрджреНрдз рдЫрдиреН рдбреЗрдн рдЪреЗрдиреА рджреНрд╡рд╛рд░рд╛ рдпреЛ рдкреЛрд╕реНрдЯред рдореИрд▓реЗ рд╕рд╛рдордирд╛ рдЧрд░реЗрдХрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ:

    • CGO рдорд╛ рджреБрд░реНрдШрдЯрдирд╛ рд╕рдорд╛рддреНрди рдЕрд╕рдХреНрд╖рдорддрд╛, Golang RecoveryCrash рд╕рдВрдЧ рдкрдирд┐;
    • рдЬрдм рд╣рд╛рдореА CGO рдорд╛ рд╡рд┐рд╕реНрддреГрдд рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рдЕрд╕рдорд░реНрде рд╣реБрдиреНрдЫреМрдВ рднрдиреЗ рдкреНрд░рджрд░реНрд╢рди рдмрд╛рдзрд╛рд╣рд░реВ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрди рдЕрд╕рдлрд▓ рд╣реБрдиреНрдЫред

    рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛

    рдореИрд▓реЗ рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдЩ рд╕реЗрд╡рд╛рд╣рд░реВ рдмреБрдЭреНрдиреЗ рд░ рдорд▓рд╛рдИ рдореЗрд░рд╛ рд╕рд╛рдереАрд╣рд░реВрд╕рдБрдЧ рдЕрдирд▓рд╛рдЗрдирдорд╛ рдкреБрд░рд╛рдиреЛ рд░реЗрдЯреНрд░реЛ рдЦреЗрд▓рд╣рд░реВ рдЦреЗрд▓реНрди рдорджреНрджрдд рдЧрд░реНрдиреЗ рдкреНрд▓реЗрдЯрдлрд░реНрдо рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдореЗрд░реЛ рд▓рдХреНрд╖реНрдп рд╣рд╛рд╕рд┐рд▓ рдЧрд░реЗрдВред Pion рдкреБрд╕реНрддрдХрд╛рд▓рдп рд░ Pion рд╕рдореБрджрд╛рдпрдХреЛ рд╕рд╣рдпреЛрдЧ рдмрд┐рдирд╛ рдпреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдореНрднрд╡ рдерд┐рдПрдиред рдо рдпрд╕рдХреЛ рдЧрд╣рди рд╡рд┐рдХрд╛рд╕рдХреЛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рдЖрднрд╛рд░реА рдЫреБред WebRTC рд░ Pion рджреНрд╡рд╛рд░рд╛ рдЙрдкрд▓рдмреНрдз рдЧрд░рд╛рдЗрдПрдХрд╛ рд╕рд░рд▓ API рд╣рд░реВрд▓реЗ рдирд┐рд░реНрдмрд╛рдз рдПрдХреАрдХрд░рдг рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реЗред рдореЗрд░реЛ рдЕрд╡рдзрд╛рд░рдгрд╛рдХреЛ рдкрд╣рд┐рд▓реЛ рдкреНрд░рдорд╛рдг рддреНрдпрд╣реА рд╣рдкреНрддрд╛ рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдпрджреНрдпрдкрд┐ рдорд▓рд╛рдИ рдкрд┐рдпрд░-рдЯреБ-рдкрд┐рдпрд░ (P2P) рд╕рдЮреНрдЪрд╛рд░рдХреЛ рдХреБрдиреИ рдкреВрд░реНрд╡ рдЬреНрдЮрд╛рди рдерд┐рдПрдиред

    рдПрдХреАрдХрд░рдгрдХреЛ рд╕рд╣рдЬрддрд╛рдХреЛ рдмрд╛рд╡рдЬреБрдж, P2P рд╕реНрдЯреНрд░рд┐рдорд┐рдЩ рд╡рд╛рд╕реНрддрд╡рдорд╛ рдХрдореНрдкреНрдпреБрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рдирдорд╛ рдПрдХ рдзреЗрд░реИ рдЬрдЯрд┐рд▓ рдХреНрд╖реЗрддреНрд░ рд╣реЛред рдкрд┐рдпрд░-рдЯреБ-рдкрд┐рдпрд░ рд╕рддреНрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЙрдирд▓реЗ IP рд░ NAT рдЬрд╕реНрддрд╛ рд▓рд╛рдореЛ рд╕рдордпрджреЗрдЦрд┐ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░рд╣рд░реВрдХреЛ рдЬрдЯрд┐рд▓рддрд╛рд╕рдБрдЧ рд╕рд╛рдордирд╛ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред рдпрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдХрд╛рдо рдЧрд░реНрджрд╛, рдореИрд▓реЗ рдиреЗрдЯрд╡рд░реНрдХрд┐рдЩ рд░ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рдирдХреЛ рдмрд╛рд░реЗрдорд╛ рдзреЗрд░реИ рдореВрд▓реНрдпрд╡рд╛рди рдЬреНрдЮрд╛рди рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗрдВ, рддреНрдпрд╕реИрд▓реЗ рдо рд╕рдмреИрд▓рд╛рдИ WebRTC рдкреНрд░рдпреЛрдЧ рдЧрд░реА P2P рдЙрддреНрдкрд╛рджрдирд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рдЧрд░реНрдЫреБред

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

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди