ΠžΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° WebRTC: p2p, ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΉΡŠΡ€, Π½ΡƒΠ»Π΅Π²Π° латСнтност

ΠžΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° WebRTC: p2p, ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΉΡŠΡ€, Π½ΡƒΠ»Π΅Π²Π° латСнтност
Π‘ΠΎΡ„Ρ‚ΡƒΠ΅Ρ€ ΠΊΠ°Ρ‚ΠΎ услуга, инфраструктура ΠΊΠ°Ρ‚ΠΎ услуга, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠ°Ρ‚ΠΎ услуга, ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΊΠ°Ρ‚ΠΎ услуга, Π²ΠΈΠ΄Π΅ΠΎΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ услуга, Π° ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° ΠΎΠ±Π»Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΈΠ³Ρ€ΠΈ ΠΊΠ°Ρ‚ΠΎ услуга? Π’Π΅Ρ‡Π΅ имашС няколко ΠΎΠΏΠΈΡ‚Π° Π·Π° създаванС Π½Π° ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ (Cloud Gaming), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Stadia, наскоро стартирано ΠΎΡ‚ Google. Stadia Π½Π΅ Π΅ Π½ΠΎΠ²Π°ΠΊ Π² WebRTC, Π½ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π»ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ WebRTC ΠΏΠΎ ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½?

Π’Ρ…Π°Π½ НгуСн (Thanh Nguyen) Ρ€Π΅ΡˆΠΈ Π΄Π° провСрява Ρ‚Π°Π·ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π² своя опСнсорсСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ CloudRetro. CloudRetro Π΅ Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Pion, популярна WebRTC Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, написана Π½Π° Go (благодаря Π½Π° Π¨ΠΎΠ½ ΠΎΡ‚ Π΅ΠΊΠΈΠΏΠ° Π½Π° Pion Π·Π° ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°Ρ‚Π° Π½Π° Ρ‚Π°Π·ΠΈ статия). Π’ Ρ‚Π°Π·ΠΈ статия Π’Ρ…Π°Π½ ΠΏΡ€Π°Π²ΠΈ ΠΎΠ±Π·ΠΎΡ€ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° своя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ сподСля ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΅ Π½Π°ΡƒΡ‡ΠΈΠ» ΠΈ с ΠΊΠ°ΠΊΠ²ΠΈ прСдизвикатСлства сС Π΅ сблъскал ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π°.

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠœΠΈΠ½Π°Π»Π°Ρ‚Π° Π³ΠΎΠ΄ΠΈΠ½Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Google обяви Stadia, Π±ΡƒΠΊΠ²Π°Π»Π½ΠΎ Π·Π°Π³ΡƒΠ±ΠΈΡ… ΡƒΠΌΠ° си. Π˜Π΄Π΅ΡΡ‚Π° Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΡƒΠ½ΠΈΠΊΠ°Π»Π½Π° ΠΈ ΠΈΠ½ΠΎΠ²Π°Ρ‚ΠΈΠ²Π½Π°, Ρ‡Π΅ постоянно си Π·Π°Π΄Π°Π²Π°Ρ… Π²ΡŠΠΏΡ€ΠΎΡΠ° ΠΊΠ°ΠΊ Π΅ възмоТно Π΄Π° сС случи ΠΏΡ€ΠΈ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π–Π΅Π»Π°Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΈ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π° ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Ρ‚Π΅ΠΌΠ°Ρ‚Π° ΠΌΠ΅ ΠΏΠΎΠ΄Ρ‚ΠΈΠΊΠ½Π° Π΄Π° създам своя вСрсия Π½Π° опСнсорсна ΠΎΠ±Π»Π°Ρ‡Π½Π° ΠΈΠ³Ρ€Π°. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ бСшС просто фантастичСн. По-Π΄ΠΎΠ»Ρƒ Π±ΠΈΡ… искал Π΄Π° сподСля процСса ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π° Π²ΡŠΡ€Ρ…Ρƒ моята годишна ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

TLDR: ΠΊΡ€Π°Ρ‚ΠΊΠ° слайд вСрсия с основнитС ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΈ

Π—Π°Ρ‰ΠΎ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΈΠ³Ρ€ΠΈ са Π±ΡŠΠ΄Π΅Ρ‰Π΅Ρ‚ΠΎ

Вярвам, Ρ‡Π΅ Cloud Gaming скоро Ρ‰Π΅ станС Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅ Π½Π΅ само Π½Π° ΠΈΠ³Ρ€ΠΈΡ‚Π΅, Π½ΠΎ ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ области Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°Ρ‚Π°. ΠžΠ±Π»Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΈΠ³Ρ€ΠΈ са Π²ΡŠΡ€Ρ…ΡŠΡ‚ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚-ΡΡŠΡ€Π²ΡŠΡ€ ΠΌΠΎΠ΄Π΅Π»Π°. Π’ΠΎΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π» максимизира ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° Ρ‡Ρ€Π΅Π· Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΈΠ³Ρ€ΠΎΠ²Π°Ρ‚Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ стрийминг Π½Π° изобраТСния/Π°ΡƒΠ΄ΠΈΠΎ към ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Π‘ΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Ρ‚Π΅ΠΆΠΊΠ°Ρ‚Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π²Π΅Ρ‡Π΅ Π½Π΅ зависи ΠΎΡ‚ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈΡ‚Π΅ ограничСния.

Google Stadia, ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ, позволява ΠΈΠ³Ρ€Π° Π½Π° AAA-ΠΈΠ³Ρ€ΠΈ (Ρ‚.Π΅. висококачСствСни ΠΈΠ³Ρ€ΠΈ-блокбастСри) Π½Π° интСрфСйс, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° YouTube. Π‘ΡŠΡ‰Π°Ρ‚Π° мСтодология ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈ ΠΈ към Π΄Ρ€ΡƒΠ³ΠΈ Ρ‚Π΅ΠΆΠΊΠΈ ΠΎΡ„Ρ„Π»Π°ΠΉΠ½ прилоТСния, ΠΊΠ°Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма ΠΈΠ»ΠΈ 2D/3D Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅Π½ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΈ Π΄Ρ€., Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ стабилно Π΄Π° Π³ΠΈ стартирамС Π½Π° устройства с ниски тСхничСски характСристики Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ.

ΠžΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° WebRTC: p2p, ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΉΡŠΡ€, Π½ΡƒΠ»Π΅Π²Π° латСнтност
Π‘ΡŠΠ΄Π΅Ρ‰Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π·ΠΈ тСхнология: прСдставСтС си, Π°ΠΊΠΎ Microsoft Windows 10 Ρ€Π°Π±ΠΎΡ‚Π΅ΡˆΠ΅ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° Chrome?

ΠžΠ±Π»Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΈΠ³Ρ€ΠΈ са тСхничСски слоТни.

Π˜Π³Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π΅ Π΅Π΄Π½Π° ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ Ρ€Π΅Π΄ΠΊΠΈ области, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° постоянна Π±ΡŠΡ€Π·Π° рСакция Π½Π° потрСбитСля. Ако случайно срСщнСм забавянС ΠΎΡ‚ 2 сСкунди ΠΏΡ€ΠΈ ΠΊΠ»ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° страницата, Ρ‚ΠΎΠ²Π° Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»ΠΈΠ²ΠΎ. Π’ΠΈΠ΄Π΅ΠΎΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ Π½Π° ΠΆΠΈΠ²ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ изостават с няколко сСкунди, Π½ΠΎ всС ΠΏΠ°ΠΊ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ удобство Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ ΠΈΠ³Ρ€Π°Ρ‚Π° чСсто забавя с 500 мс, ΠΈΠ³Ρ€Π°Ρ‚Π° просто става нСвъзмоТна. Π¦Π΅Π»Ρ‚Π° Π½ΠΈ Π΅ Π΄Π° постигнСм ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ниска латСнция, Π·Π° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ максимално Ρ€Π°Π·Ρ€ΠΈΠ²Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ…ΠΎΠ΄Π° ΠΈ мСдията. Π—Π°Ρ‚ΠΎΠ²Π° традиционният ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ към видСострийминга Ρ‚ΡƒΠΊ Π½Π΅ Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌ.

ΠžΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° WebRTC: p2p, ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΉΡŠΡ€, Π½ΡƒΠ»Π΅Π²Π° латСнтност
ΠžΠ±Ρ‰ шаблон Π½Π° ΠΎΠ±Π»Π°Ρ‡Π½Π°Ρ‚Π° ΠΈΠ³Ρ€Π°.

ΠžΡ‚Π²ΠΎΡ€Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ CloudRetro.

Π Π΅ΡˆΠΈΡ… Π΄Π° създам тСстов ΠΎΠ±Ρ€Π°Π·Π΅Ρ† Π½Π° ΠΎΠ±Π»Π°Ρ‡Π½Π° ΠΈΠ³Ρ€Π°, Π·Π° Π΄Π° провСря, Π΄Π°Π»ΠΈ всичко Π΅ възмоТно ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΈΠ²Π° строги ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ограничСния. Π—Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° концСпцията ΠΈΠ·Π±Ρ€Π°Ρ… Golang, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π΅ Π½Π°ΠΉ-запознатият ΠΌΠΈ Π΅Π·ΠΈΠΊ ΠΈ Π΅ подходящ Π·Π° Ρ‚Π°Π·ΠΈ рСализация ΠΏΠΎ мноТСство ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ, ΠΊΠ°ΠΊ сС ΠΎΠΊΠ°Π·Π° ΠΏΠΎ-късно. Go Π΅ прост ΠΈ сС Ρ€Π°Π·Π²ΠΈΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡŠΡ€Π·ΠΎ; ΠΊΠ°Π½Π°Π»ΠΈΡ‚Π΅ Π² Go са ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° многопоточността.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ CloudRetro.io – ΠΎΠ±Π»Π°Ρ‡Π½Π°Ρ‚Π° ΠΈΠ³Ρ€ΠΎΠ²Π° услуга с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π·Π° Ρ€Π΅Ρ‚Ρ€ΠΎ ΠΈΠ³Ρ€ΠΈ. Π¦Π΅Π»Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ Π΄Π° внСсС Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Ρ€Π΅Ρ‚Ρ€ΠΎ ΠΈΠ³Ρ€ΠΈ Π½Π°ΠΉ-ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΈΡ‚Π΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΈ усСщания ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈ ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΉΡŠΡ€.
МоТС Π΄Π° сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅Ρ‚Π΅ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‚ΡƒΠΊ: https://github.com/giongto35/cloud-game.

Ѐункционалност Π½Π° CloudRetro.

Π—Π° дСмонстрация Π½Π° цялата ΠΌΠΎΡ‰ Π½Π° ΠΎΠ±Π»Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΈΠ³Ρ€ΠΈ Π² CloudRetro сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ€Π΅Ρ‚Ρ€ΠΎ ΠΈΠ³Ρ€ΠΈ. Π’ΠΎΠ²Π° позволява Π΄Π° сС ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ мноТСство ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΈ прСТивявания.

  • ΠŸΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ Π½Π° ΠΈΠ³Ρ€Π°Ρ‚Π°.
    • ΠœΠΎΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ ΠΏΡ€ΠΈ отварянС Π½Π° страницата; Π½Π΅ са Π½ΡƒΠΆΠ½ΠΈ изтСглянС ΠΈ инсталиранС.
    • Π Π°Π±ΠΎΡ‚ΠΈ Π² ΠΌΠΎΠ±ΠΈΠ»Π΅Π½ Π±Ρ€Π°ΡƒΠ·ΡŠΡ€, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ няма Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ никакъв софтуСр Π·Π° стартиранС.

  • Π˜Π³Ρ€ΠΎΠ²ΠΈΡ‚Π΅ сСсии ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС сподСлят Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ устройства ΠΈ Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² ΠΎΠ±Π»Π°ΠΊΠ° Π·Π° слСдващото Π²Π»ΠΈΠ·Π°Π½Π΅.
  • Π˜Π³Ρ€Π°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС стриймва, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΅ възмоТно Π΄Π° сС ΠΈΠ³Ρ€Π°Π΅ Π½Π° нСя Π²Π΅Π΄Π½Π°Π³Π° ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ:
    • Crowdplay Ρ‚ΠΈΠΏ TwitchPlayPokemon, само Ρ‡Π΅ ΠΏΠΎ-кросплатформСн ΠΈ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅.
    • ΠžΡ„Π»Π°ΠΉΠ½ ΠΈΠ³Ρ€ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½. ΠœΠΎΠ³Π°Ρ‚ Π΄Π° играят ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π±Π΅Π· настройки Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. Π’ Samurai Shodown сСга ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° играят 2 ΠΈΠ³Ρ€Π°Ρ‡ΠΈ ΠΏΡ€Π΅Π· ΠΎΠ±Π»Π°ΠΊΠ° CloudRetro.

    ΠžΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° WebRTC: p2p, ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΉΡŠΡ€, Π½ΡƒΠ»Π΅Π²Π° латСнтност
    Π”Π΅ΠΌΠΎ вСрсия Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠ° ΠΎΠ½Π»Π°ΠΉΠ½ ΠΈΠ³Ρ€Π° Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ устройства

    Π˜Π½Ρ„Ρ€Π°ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°

    Изисквания ΠΈ стСк ΠΎΡ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

    По-Π΄ΠΎΠ»Ρƒ Π΅ списък Π½Π° изискванията, ΠΊΠΎΠΈΡ‚ΠΎ поставих ΠΏΡ€Π΅Π΄ΠΈ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

    1. Π•Π΄ΠΈΠ½ ΠΈΠ³Ρ€Π°Ρ‡
    Π’ΠΎΠ²Π° изискванС ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½Π΅ особСно Π²Π°ΠΆΠ½ΠΎ ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ Ρ‚ΡƒΠΊ, Π½ΠΎ Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΠΌΠΎΠΈΡ‚Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈ ΠΈΠ·Π²ΠΎΠ΄ΠΈ. Π’ΠΎ позволява Π½Π° ΠΎΠ±Π»Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΈΠ³Ρ€ΠΈ Π΄Π° сС ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π°Ρ‚ ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ сС ΠΌΠΎΠΆΠ΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΈ услуги. Ако сС фокусирамС Π²ΡŠΡ€Ρ…Ρƒ СднопотрСбитСлска ΠΈΠ³Ρ€Π°, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° сС ΠΈΠ·Π±Π°Π²ΠΈΠΌ ΠΎΡ‚ цСнтрализирания ΡΡŠΡ€Π²ΡŠΡ€ ΠΈΠ»ΠΈ CDN, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π½Π° маситС. ВмСсто Π΄Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ Π½Π° ΠΏΠΎΠ³Π»ΡŠΡ‰Π°Ρ‰ ΡΡŠΡ€Π²ΡŠΡ€ ΠΈΠ»ΠΈ Π΄Π° ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π½Π° цСнтрализирания WebSocket ΡΡŠΡ€Π²ΡŠΡ€, сСрвиснитС ΠΏΠΎΡ‚ΠΎΡ†ΠΈ сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π½Π° потрСбитСля Ρ‡Ρ€Π΅Π· P2P ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ с WebRTC.

    2. МСдиСн ΠΏΠΎΡ‚ΠΎΠΊ с ниска латСнтност
    Π§Π΅Ρ‚Π΅ΠΉΠΊΠΈ Π·Π° Stadia, чСсто срСщам Π² някои статии спомСнаванС Π½Π° WebRTC. Π Π°Π·Π±Ρ€Π°Ρ…, Ρ‡Π΅ WebRTC Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½Π° тСхнология ΠΈ Π΅ чудСсно ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π΅Π½Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ. WebRTC Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ осигурява комуникация Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΡƒΠ΅Π± Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈ ΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ прилоТСния Ρ‡Ρ€Π΅Π· прост API. Π’ΠΎΠΉ прСдоставя P2P ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΎ Π·Π° ΠΌΠ΅Π΄ΠΈΠΈ ΠΈ ΠΈΠΌΠ° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ стандартни ΠΊΠΎΠ΄Π΅Ρ†ΠΈ, ΠΊΠ°Ρ‚ΠΎ VP8 ΠΈ H264.

    Π”Π°Π΄ΠΎΡ… ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ Π½Π° максималСн ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚ Π·Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅, вмСсто Π½Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° високо качСство Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ‚Π°. Π’ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΠ° са допустими ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Π·Π°Π³ΡƒΠ±ΠΈ. Π’ Google Stadia ΠΈΠΌΠ° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° намаляванС Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, ΠΈ ΠΊΠ°Π΄Ρ€ΠΈΡ‚Π΅ сС ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Ρ‚ Π΄ΠΎ ΠΏΠΎ-високо качСство ΠΏΡ€Π΅Π΄ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° P2P Π²ΡŠΠ·Π»ΠΈΡ‚Π΅.

    3. Π Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° инфраструктура с гСографска ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΡ
    НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ»ΠΊΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΡŠΡ‚ Π·Π° компрСсия ΠΈ ΠΊΠΎΠ΄ΡŠΡ‚, ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° остава Ρ€Π΅ΡˆΠ°Π²Π°Ρ‰ΠΈΡΡ‚ Ρ„Π°ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ влияС Π½Π° забавянСто. АрхитСктурата трябва Π΄Π° ΠΈΠΌΠ° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° Π½Π°ΠΉ-близкия Π΄ΠΎ потрСбитСля ΡΡŠΡ€Π²ΡŠΡ€, Π·Π° Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ (RTT). АрхитСктурата трябва Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π° с 1 ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ ΠΈ няколко стрийминг ΡΡŠΡ€Π²ΡŠΡ€Π°, Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΠΎ цСлия свят: Π—Π°ΠΏΠ°Π΄Π΅Π½ БАЩ, Π˜Π·Ρ‚ΠΎΡ‡Π΅Π½ БАЩ, Π•Π²Ρ€ΠΎΠΏΠ°, Π‘ΠΈΠ½Π³Π°ΠΏΡƒΡ€, ΠšΠΈΡ‚Π°ΠΉ. Всички стрийминг ΡΡŠΡ€Π²ΡŠΡ€ΠΈ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ напълно ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΈ. БистСмата ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π° своСто Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ сС ΠΏΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½ΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈ ΠΎΡ‚ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. Π’Π°ΠΊΠ°, ΠΏΡ€ΠΈ голям Ρ‚Ρ€Π°Ρ„ΠΈΠΊ, добавянСто Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ позволява ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅.

    4. Π‘ΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ Π½Π° Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈΡ‚Π΅
    ΠžΠ±Π»Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΈΠ³Ρ€ΠΈ сС прСдставят Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ изискват ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎ ΠΎΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΈΠΌΠ° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° стартиранС Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€. Π‘Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈΡ‚Π΅ ΠΏΠΎΠΌΠ°Π³Π°Ρ‚ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ игровият процСс възмоТно Π½Π°ΠΉ-ΡƒΠ΄ΠΎΠ±Π΅Π½ Π·Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅, освобоТдавайки Π³ΠΈ ΠΎΡ‚ инсталиранСто Π½Π° софтуСр ΠΈ Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€. Π‘Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈΡ‚Π΅ ΡΡŠΡ‰ΠΎ ΠΏΠΎΠΌΠ°Π³Π°Ρ‚ Π΄Π° сС осигури крос-платформСност Π·Π° ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ ΠΈ дСсктоп вСрсии. Π—Π° щастиС, WebRTC сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈ.

    5. Ясно Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° игровия интСрфСйс ΠΈ услугата
    Π’ΠΈΠΆΠ΄Π°ΠΌ услугата Π·Π° ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°. ВсСки ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» трябва Π΄Π° ΠΈΠΌΠ° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° ΡΠ²ΡŠΡ€ΠΆΠ΅ ΠΊΠ°ΠΊΠ²ΠΎΡ‚ΠΎ ΠΈ Π΄Π° Π΅ към ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. Π‘Π΅Π³Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Ρ… LibRetro с услугата Π·Π° ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ LibRetro ΠΏΡ€Π΅Π΄Π»Π°Π³Π° красив интСрфСйс Π½Π° игровия Смулятор Π·Π° Ρ€Π΅Ρ‚Ρ€ΠΎ ΠΈΠ³Ρ€ΠΈ, ΠΊΠ°Ρ‚ΠΎ SNES, GBA, PS.

    6. Π‘Ρ‚Π°ΠΈ Π·Π° ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΉΡŠΡ€, crowd play ΠΈ дълбоко ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ (deep-link) с ΠΈΠ³Ρ€Π°Ρ‚Π°
    CloudRetro ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° мноТСство Π½ΠΎΠ²ΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈ, ΠΊΠ°Ρ‚ΠΎ CrowdPlay ΠΈ Online MultiPlayer Π·Π° Ρ€Π΅Ρ‚Ρ€ΠΎ ΠΈΠ³Ρ€ΠΈ. Ако няколко ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ отворят Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ deep-link Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΊΠΎΠΌΠΏΡŽΡ‚Ρ€ΠΈ, Ρ‚Π΅ Ρ‰Π΅ видят ΡΡŠΡ‰Π°Ρ‚Π° Π°ΠΊΡ‚ΠΈΠ²Π½Π° ΠΈΠ³Ρ€Π° ΠΈ Π΄ΠΎΡ€ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΏΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ към нСя.

    ОсвСн Ρ‚ΠΎΠ²Π°, ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡΡ‚Π° Π½Π° ΠΈΠ³Ρ€Π°Ρ‚Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² ΠΎΠ±Π»Π°Ρ‡Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π’ΠΎΠ²Π° позволява Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Ρ‚ ΠΈΠ³Ρ€Π°Ρ‚Π° ΠΏΠΎ всяко Π²Ρ€Π΅ΠΌΠ΅ Π½Π° всяко Π΄Ρ€ΡƒΠ³ΠΎ устройство.

    7. Π₯ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅
    ΠšΠ°ΠΊΡ‚ΠΎ всС SAAS Π² днСшно Π²Ρ€Π΅ΠΌΠ΅, ΠΎΠ±Π»Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΈΠ³Ρ€ΠΈ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ΠΈ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΈ. Π”ΠΈΠ·Π°ΠΉΠ½ΡŠΡ‚ с "ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€-Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊ" позволява добавянСто Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ†ΠΈ, Π·Π° Π΄Π° обслуТват ΠΏΠΎ-голям Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.

    8. Няма ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½Π΅ с Π΅Π΄Π½ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎ
    Π˜Π½Ρ„Ρ€Π°ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° CloudRetro Π΅ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ доставчици (Digital Ocean, Alibaba, потрСбитСлски доставчик) Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½ΠΈ. Аз Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΌ старта Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Docker Π·Π° инфраструктурата ΠΈ настройвам ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° bash скрипт, Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π° зависимостта ΠΎΡ‚ Π΅Π΄ΠΈΠ½ ΠΎΠ±Π»Π°Ρ‡Π΅Π½ доставчик. ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΠΉΠΊΠΈ Ρ‚ΠΎΠ²Π° с NAT Traversal Π² WebRTC, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚ Π·Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° CloudRetro Π½Π° всяка ΠΎΠ±Π»Π°Ρ‡Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΈ Π΄ΠΎΡ€ΠΈ Π½Π° машини Π½Π° всСки ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π».

    АрхитСктурСн Π΄ΠΈΠ·Π°ΠΉΠ½

    Π Π°Π±ΠΎΡ‚Π½ΠΈΠΊ: (ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΡΡŠΡ€Π²ΡŠΡ€, спомСнат ΠΏΠΎ-Π³ΠΎΡ€Π΅) ΡƒΠΌΠ½ΠΎΠΆΠ°Π²Π° ΠΈΠ³Ρ€ΠΈΡ‚Π΅, стартира кодиращия ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΌΠ΅Π΄ΠΈΠ° Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅. Π˜Π½ΡΡ‚Π°Π½Ρ†ΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ° са Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΠΎ цСлия свят ΠΈ всСки Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° мноТСство потрСбитСлски сСсии Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ.

    ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€: отговаря Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠ² ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» с Π½Π°ΠΉ-подходящия Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊ Π·Π° ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Π°Ρ‚Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅. ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ΡŠΡ‚ взаимодСйства с Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ†ΠΈΡ‚Π΅ Ρ‡Ρ€Π΅Π· WebSocket.

    Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΈΡ‚Π΅ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ: Ρ†Π΅Π½Ρ‚Ρ€Π°Π»Π½ΠΎ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° всички ΠΈΠ³Ρ€ΠΎΠ²ΠΈ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ. Π’ΠΎΠ²Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ осигурява Π²Π°ΠΆΠ½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ записванС/Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅.

    ΠžΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° WebRTC: p2p, ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΉΡŠΡ€, Π½ΡƒΠ»Π΅Π²Π° латСнтност
    Високо Π½ΠΈΠ²ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° CloudRetro

    ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡΠΊΠΈ сцСнарий

    ΠšΠΎΠ³Π°Ρ‚ΠΎ Π½ΠΎΠ² ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» ΠΎΡ‚Π²ΠΎΡ€ΠΈ CloudRetro Π² ΡΡ‚ΡŠΠΏΠΊΠΈ 1 ΠΈ 2, ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π·Π°Π΅Π΄Π½ΠΎ със списъка Π½Π° Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ†ΠΈ сС Π·Π°ΠΏΠΈΡ‚Π²Π° Π·Π° ΠΏΡŠΡ€Π²Π°Ρ‚Π° страница. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π½Π° ΡΡ‚ΡŠΠΏΠΊΠ° 3 ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ изчислява Π·Π°ΠΊΡŠΡΠ½Π΅Π½ΠΈΡΡ‚Π° Π·Π° всички ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° HTTP заявка ping. Π’ΠΎΠ·ΠΈ списък със закъснСния слСд Ρ‚ΠΎΠ²Π° сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ΠΎΡ€Π°, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Ρ‚ΠΎΠΉ Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ Π½Π°ΠΉ-подходящия Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊ Π·Π° обслуТванСто Π½Π° потрСбитСля. На ΡΡ‚ΡŠΠΏΠΊΠ° 4 ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ сС създава ΠΈΠ³Ρ€Π°. ΠœΠ΅ΠΆΠ΄Ρƒ потрСбитСля ΠΈ назначСнния Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊ сС установява ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Π° Π²Ρ€ΡŠΠ·ΠΊΠ° WebRTC.
    ΠžΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° WebRTC: p2p, ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΉΡŠΡ€, Π½ΡƒΠ»Π΅Π²Π° латСнтност
    ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡΠΊΠΈ сцСнарий слСд ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏ

    Какво ΠΈΠΌΠ° Π²ΡŠΡ‚Ρ€Π΅ Π² Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ°

    Π˜Π³Ρ€ΠΎΠ²ΠΈΡ‚Π΅ ΠΈ стрийминг ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΈ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½ΠΎ Π² Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ° ΠΈ обмСнят информация ΠΏΡ€Π΅Π· интСрфСйса. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Ρ‚Π°Π·ΠΈ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚ сС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° Ρ‡Ρ€Π΅Π· ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΏΠΎ ΠΊΠ°Π½Π°Π»ΠΈΡ‚Π΅ Π½Π° Golang Π² ΡΡŠΡ‰ΠΈΡ процСс. Π‘Π»Π΅Π΄Π²Π°Ρ‰Π°Ρ‚Π° Ρ†Π΅Π» Π΅ сСгрСгацията, Ρ‚.Π΅. нСзависимото стартиранС Π½Π° ΠΈΠ³Ρ€Π° Π² Π΄Ρ€ΡƒΠ³ процСс.

    ΠžΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° WebRTC: p2p, ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΉΡŠΡ€, Π½ΡƒΠ»Π΅Π²Π° латСнтност
    ВзаимодСйствиСто Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ°

    Основни ΡΡŠΡΡ‚Π°Π²Π½ΠΈ части:

    • WebRTC: клиСнтски ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π²Ρ…ΠΎΠ΄ ΠΎΡ‚ потрСбитСля ΠΈ ΠΈΠ·Π»ΡŠΡ‡Π²Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ΠΎ ΠΌΠ΅Π΄ΠΈΠ° ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π°.
    • Π˜Π³Ρ€ΠΎΠ²ΠΈ Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€: ΠΈΠ³Ρ€ΠΎΠ²ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Libretro, систСмата ΠΌΠΎΠΆΠ΅ Π΄Π° стартира ΠΈΠ³Ρ€Π° Π² Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΈ процСс ΠΈ Π΄Π° ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π° ΠΌΠ΅Π΄ΠΈΠ° ΠΈ Π²Ρ…ΠΎΠ΄Π΅Π½ ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΡ‚Π²ΡŠΡ‚Ρ€Π΅.
    • Π’ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎΠΈΠ³Ρ€ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΠ°Π΄Ρ€ΠΈ сС ΠΏΡ€ΠΈΡ…Π²Π°Ρ‰Π°Ρ‚ ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‚ към ΠΊΠΎΠ΄ΠΈΡ€Π°Ρ‡Π°.
    • Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅/Π°ΡƒΠ΄ΠΈΠΎ ΠΊΠΎΠ΄Π΅Ρ€: ΠΊΠΎΠ΄ΠΈΡ€Π°Ρ‰ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΌΠ΅Π΄ΠΈΠ° ΠΊΠ°Π΄Ρ€ΠΈ, ΠΊΠΎΠ΄ΠΈΡ€Π° Π³ΠΈ във Ρ„ΠΎΠ½ΠΎΠ² Ρ€Π΅ΠΆΠΈΠΌ ΠΈ ΠΈΠ·Π»ΡŠΡ‡Π²Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ΠΈ изобраТСния/Π°ΡƒΠ΄ΠΈΠΎ.

    РСализация

    CloudRetro Ρ€Π°Π·Ρ‡ΠΈΡ‚Π° Π½Π° WebRTC ΠΊΠ°Ρ‚ΠΎ основна тСхнология, Π·Π°Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° навляза Π² подробности Π·Π° имплСмСнтацията Π½Π° Golang, Ρ€Π΅ΡˆΠΈΡ… Π΄Π° Ρ€Π°Π·ΠΊΠ°ΠΆΠ° Π·Π° самото WebRTC. Π’ΠΎΠ²Π° Π΅ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»Π½Π° тСхнология, която ΠΌΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° постигна забавянС Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ, Ρ€Π°Π²Π½ΠΎ Π½Π° само част ΠΎΡ‚ сСкундата.

    WebRTC

    WebRTC Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π΄Π° осигури висококачСствСни peer-to-peer Π²Ρ€ΡŠΠ·ΠΊΠΈ Π½Π° Π½Π°Ρ‚ΠΈΠ²Π½ΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ прилоТСния ΠΈ Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° прости API.

    NAT Traversal

    WebRTC Π΅ извСстСн със своята функционалност NAT Traversal. WebRTC Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π·Π° peer-to-peer комуникация. Π¦Π΅Π»Ρ‚Π° ΠΌΡƒ Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈ Π½Π°ΠΉ-подходящия Π΄ΠΈΡ€Π΅ΠΊΡ‚Π΅Π½ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚, избягвайки NAT шлюзовС ΠΈι˜²η«ε’™ΠΈ Π·Π° peer-to-peer ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Ρ‡Ρ€Π΅Π· процСс, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ ICE. Π’ Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ процСс, API-Ρ‚ΠΎ Π½Π° WebRTC Π½Π°ΠΌΠΈΡ€Π° вашия ΠΏΡƒΠ±Π»ΠΈΡ‡Π΅Π½ IP адрСс с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° STUN ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΈ Π³ΠΎ прСнасочва към ΡΡŠΡ€Π²ΡŠΡ€ Π·Π° Ρ€Π΅Π»Π΅ (TURN), ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС установСна.

    Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, CloudRetro Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° напълно Ρ‚Π°Π·ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚. НСговитС peer-to-peer Π²Ρ€ΡŠΠ·ΠΊΠΈ Π½Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅, Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈΡ‚Π΅ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ. Π‘ΡŠΡ€Π²ΡŠΡ€Π½Π°Ρ‚Π° част Π½Π° ΠΌΠΎΠ΄Π΅Π»Π° ΠΈΠΌΠ° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ограничСния Π·Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚ ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎΡ‚ΠΎ потрСбитСлско устройство. Π’ΠΎΠ²Π° позволява ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ отварянС Π½Π° входящи ΠΏΠΎΡ€Ρ‚ΠΎΠ²Π΅ ΠΈΠ»ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° Π½Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΈ IP адрСси, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π½Π΅ Π΅ Π·Π°Π΄ NAT.

    По-Ρ€Π°Π½ΠΎ исках Π΄Π° ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π·Π° разпространСниС Π½Π° ΠΈΠ³Ρ€ΠΈ Π·Π° Cloud Gaming. Π˜Π΄Π΅ΡΡ‚Π° бСшС Π΄Π° сС ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π½Π° ΡΡŠΠ·Π΄Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° ΠΈΠ³Ρ€ΠΈ Π΄Π° прСдоставят ΠΈΠ³Ρ€ΠΈ ΠΈ стрийминг рСсурси. ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π΄Π° взаимодСйстват Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ с доставчицитС. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, Π² Π΄Π΅Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Ρ„ΠΎΡ€ΠΌΠ°, CloudRetro Π΅ просто срСда Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° странични стрийминг рСсурси с ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ ΠΏΠΎ-ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ Π½Π΅ носи хостинг. Ролята Π½Π° WebRTC NAT Traversal Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π²Π°ΠΆΠ½Π° Π·Π° улСсняванС Π½Π° инициализацията Π½Π° peer-to-peer Π²Ρ€ΡŠΠ·ΠΊΠ° Π½Π° странични стрийминг рСсурси, ΠΊΠΎΠ΅Ρ‚ΠΎ опростява ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡΡŠΠ·Π΄Π°Ρ‚Π΅Π»Ρ с ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°.

    Π’ΠΈΠ΄Π΅ΠΎ компрСсия

    Π’ΠΈΠ΄Π΅ΠΎ компрСсията Π΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Π° част ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠ°, която Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ допринася Π·Π° плавността Π½Π° ΠΈΠ·Π»ΡŠΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС знаят всички Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ ΠΏΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ Π² VP8/H264, Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° концСпцията ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° сС ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° скоростта Π½Π° стрийминг Π²ΠΈΠ΄Π΅ΠΎ, Π΄Π° сС отстраняват Π½Π΅ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΈ Π΄Π° сС Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π° Π·Π°ΠΊΡŠΡΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ.

    ΠšΠΎΠΌΠΏΡ€Π΅ΡΠΈΡΡ‚Π° Π½Π° Π²ΠΈΠ΄Π΅ΠΎ Π·Π° стрийминг услуга Π΅ слоТна Π·Π°Π΄Π°Ρ‡Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΡŠΡ‚ трябва Π΄Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ ΠΎΠ±Ρ‰ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ + Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ ΠΏΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° + Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ниско, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π΅ възмоТно. ОсвСн Ρ‚ΠΎΠ²Π°, ΠΏΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ трябва Π΄Π° бъдС послСдоватСлСн ΠΈ Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚. Някои Π²Π·Π°ΠΈΠΌΠ½ΠΈ компромиси Π² ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π΅ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅Ρ‚Π΅ΠΌ дълго Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ ΠΏΡ€Π΅Π΄ ΠΏΠΎ-малък Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Ρ„Π°ΠΉΠ»Π° ΠΈ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅, ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ нСпослСдоватСлна компрСсия.

    Π˜Π΄Π΅ΡΡ‚Π° Π·Π° компрСсия Π½Π° Π²ΠΈΠ΄Π΅ΠΎ Π΅ Π΄Π° сС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ Π½Π΅Π½ΡƒΠΆΠ½ΠΈΡ‚Π΅ Π±ΠΈΡ‚ΠΎΠ²Π΅ информация, ΠΊΠ°Ρ‚ΠΎ сС Π·Π°ΠΏΠ°Π·ΠΈ допустимото Π½ΠΈΠ²ΠΎ Π½Π° точност Π·Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅. ОсвСн ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ статични ΠΊΠ°Π΄Ρ€ΠΈ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΡŠΡ‚ ΠΈΠ·Π²Π΅ΠΆΠ΄Π° тСкущия ΠΊΠ°Π΄ΡŠΡ€ ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ ΠΈ слСдващия, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ сС ΠΏΡ€Π΅Π΄Π°Π²Π° само тяхната Ρ€Π°Π·Π»ΠΈΠΊΠ°. ΠšΠ°ΠΊΡ‚ΠΎ сС Π²ΠΈΠΆΠ΄Π° ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° с Pacman, ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ сС само Π΄ΠΈΡ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ.

    ΠžΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° WebRTC: p2p, ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΉΡŠΡ€, Π½ΡƒΠ»Π΅Π²Π° латСнтност
    Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Π΄Ρ€ΠΈ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° с Pacman

    Аудио компрСсия

    По Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ Π½Π°Ρ‡ΠΈΠ½, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΡŠΡ‚ Π·Π° компрСсия Π½Π° Π·Π²ΡƒΠΊ отпуска Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅Ρ‚ΠΈ ΠΎΡ‚ Ρ‡ΠΎΠ²Π΅ΠΊΠ°. Opus Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅ Π°ΡƒΠ΄ΠΈΠΎΠΊΠΎΠ΄Π΅ΠΊ с Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€Π° производитСлност. Π’ΠΎΠΉ Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ Π·Π° ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π·Π²ΡƒΠΊΠΎΠ²ΠΈ вълни Ρ‡Ρ€Π΅Π· ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π° ΠΏΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‡Π΅Ρ‚Π°, Ρ‚Π°ΠΊΡŠΠ² ΠΊΠ°Ρ‚ΠΎ RTP (Real Time Transport Protocol – ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π·Π° прСнос Π½Π° Ρ€Π΅Π°Π»Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π΅Π½ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ). Π—Π°Π΄ΡŠΡ€ΠΆΠ°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ Ρ‚ΠΎΠ²Π° Π½Π° mp3 ΠΈ aac, Π° качСството Π΅ ΠΏΠΎ-високо. ОбикновСно Π·Π°ΠΊΡŠΡΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ ΠΎΠΊΠΎΠ»ΠΎ 5~66,5 мс.

    Pion, WebRTC Π² Golang

    Pion Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ прСнаписва WebRTC Π½Π° Golang. ВмСсто Π΄Π° ΠΎΠ±Π²ΠΈΠ²Π° ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΈΡ‚Π΅ Π½Π°Ρ‚ΠΈΠ²Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° C++ WebRTC, Pion Π΅ Π½Π°Ρ‚ΠΈΠ²Π½Π° Golang рСализация Π½Π° WebRTC с ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π° производитСлност, интСграция с Go ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° вСрсиитС Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈΡ‚Π΅ WebRTC.

    Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° осигурява ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ с мноТСство ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΈ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ с закъснСниС ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ сСкунда. Вя ΠΈΠΌΠ° своя рСализация Π½Π° STUN, DTLS, SCTP ΠΈ Π΄Ρ€., ΠΈ някои СкспСримСнти с QUIC ΠΈ WebAssembly. Π’Π°Π·ΠΈ опСнсорс Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° сама ΠΏΠΎ сСбС си Π΅ наистина Π΄ΠΎΠ±ΡŠΡ€ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ с ΠΎΡ‚Π»ΠΈΡ‡Π½Π° докумСнтация, рСализация Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ ΠΈ страхотни ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ.

    ΠžΠ±Ρ‰Π΅ΡΡ‚Π²ΠΎΡ‚ΠΎ Π½Π° Pion, Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄Π΅Π½ΠΎ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΠ°Π»Π΅Π½ ΡΡŠΠ·Π΄Π°Ρ‚Π΅Π», Π΅ доста Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ, водят сС ΠΌΠ½ΠΎΠ³ΠΎ качСствСни дискусии относно WebRTC. Ако Π²ΠΈ интСрСсува Ρ‚Π°Π·ΠΈ тСхнология, ΠΏΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½Π΅Ρ‚Π΅ сС към http://pion.ly/slack Ρ‰Π΅ Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΈ Π½Π΅Ρ‰Π°.

    НаписванС на CloudRetro на Golang

    ΠžΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° WebRTC: p2p, ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΉΡŠΡ€, Π½ΡƒΠ»Π΅Π²Π° латСнтност
    РСализация Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊ Π½Π° Go

    ΠšΠ°Π½Π°Π»ΠΈΡ‚Π΅ Π½Π° Go Π² дСйствиС

    Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° красивия Π΄ΠΈΠ·Π°ΠΉΠ½ Π½Π° ΠΊΠ°Π½Π°Π»ΠΈΡ‚Π΅ Π½Π° Go, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ с ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ ΠΈ ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ сС опростяват. ΠšΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π°, Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ GoRoutines ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ работят няколко ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. ВсСки ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ управлява собствСното си ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ ΠΈ ΠΊΠΎΠΌΡƒΠ½ΠΈΠΊΠΈΡ€Π° Ρ‡Ρ€Π΅Π· ΠΊΠ°Π½Π°Π»ΠΈ. Π˜Π·Π±ΠΎΡ€ΡŠΡ‚ Π½Π° Golang Π½Π°Π»Π°Π³Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΅Π΄Π½ΠΎ Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΎ ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅ във всСки ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π² ΠΈΠ³Ρ€Π°Ρ‚Π° (game tick). Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π·Π° Ρ‚Π°ΠΊΡŠΠ² Π΄ΠΈΠ·Π°ΠΉΠ½ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅. НапримСр, ΠΊΠΎΠ³Π°Ρ‚ΠΎ потрСбитСлят Π·Π°ΠΏΠ°Π·Π²Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π΅ пълСн ΠΌΠΎΠΌΠ΅Π½Ρ‚Π΅Π½ snapshot Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ³Ρ€Π°Ρ‚Π°. Π’ΠΎΠ²Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ трябва Π΄Π° останС Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ, изпълнявайки Π²Ρ…ΠΎΠ΄Π°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π΅ бъдС Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΎ. По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° всСки game tick Π±Π΅ΠΊΡΡ‚Π΅Π½Π΄ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° само опСрация Π½Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ ΠΈΠ»ΠΈ Π²Ρ…ΠΎΠ΄, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ процСса потокобСзопасСн.

    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 ΠΈ Multiple Player. Π‘Π»Π΅Π΄Π²Π°ΠΉΠΊΠΈ Ρ‚ΠΎΠ·ΠΈ шаблон, всички потрСбитСлски Π²Ρ…ΠΎΠ΄ΠΎΠ²Π΅ Π² Π΅Π΄Π½Π° стая сС Π²Π³Ρ€Π°ΠΆΠ΄Π°Ρ‚ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»Π΅Π½ Π²Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠ°Π½Π°Π». Π˜Π³Ρ€Π°Π»Π½ΠΈΡ‚Π΅ ΠΌΠ΅Π΄ΠΈΠΈ слСд Ρ‚ΠΎΠ²Π° сС разпространяват Π½Π° всички ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ Π² Π΅Π΄Π½Π° стая. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ постигамС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ³Ρ€Π°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ няколко ΠΈΠ³Ρ€ΠΎΠ²ΠΈ сСсии Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ.

    ΠžΠ±Π»Π°Ρ‡Π½ΠΈ ΠΈΠ³Ρ€ΠΈ с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° WebRTC: p2p, ΠΌΡƒΠ»Ρ‚ΠΈΠΏΠ»Π΅ΠΉΡŠΡ€, Π½ΡƒΠ»Π΅Π²Π° латСнтност
    Бинхронизация ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ сСсии

    ΠΠ΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ Π½Π° Golang

    Golang Π½Π΅ Π΅ ΠΏΠ΅Ρ€Ρ„Π΅ΠΊΡ‚Π΅Π½. ΠšΠ°Π½Π°Π»ΡŠΡ‚ Π΅ Π±Π°Π²Π΅Π½. Π’ сравнСниС с Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈΡ‚Π΅, ΠΊΠ°Π½Π°Π»ΠΈΡ‚Π΅ Π² Go ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ просто ΠΏΠΎ-лСсСн Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ, Π½ΠΎ ΠΊΠ°Π½Π°Π»ΡŠΡ‚ Π½Π΅ осигурява Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€Π°Ρ‚Π° производитСлност. Под ΠΊΠ°Π½Π°Π»ΠΈΡ‚Π΅ ΠΈΠΌΠ° слоТна Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅. Π—Π°Ρ‚ΠΎΠ²Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ… някои ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ Π² рСализацията, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΡ€ΠΈΠ»Π°Π³Π°ΠΉΠΊΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Π°Ρ‚ΠΎΠΌΠ½ΠΈ стойности вмСсто ΠΊΠ°Π½Π°Π»ΠΈΡ‚Π΅ Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° производитСлността.

    ОсвСн Ρ‚ΠΎΠ²Π°, garbage collector Π² Golang Π΅ Π½Π΅ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π½, ΠΊΠΎΠ΅Ρ‚ΠΎ понякога Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ дълги ΠΏΠ°ΡƒΠ·ΠΈ. Π’ΠΎΠ²Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΡ€Π΅Ρ‡ΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° прилоТСнията Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅.

    CGO

    ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰Π° VP8/H264 Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π° Golang с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π·Π° компрСсиранС Π½Π° ΠΌΠ΅Π΄ΠΈΠΈ ΠΈ Libretro Π·Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΈ Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ. Всички Ρ‚Π΅Π·ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ просто ΠΎΠ±Π²ΠΈΠ²Π°Ρ‚ C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π² Go с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° CGO. Някои ΠΎΡ‚ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈΡ‚Π΅ са посочСни Π² Ρ‚ΠΎΠ·ΠΈ пост Π½Π° Dave Cheney. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅, с ΠΊΠΎΠΈΡ‚ΠΎ сС сблъсквам:

    • Π½Π΅Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° ΡƒΠ»ΠΎΠ²ΠΈΠΌ срив Π² CGO, Π΄ΠΎΡ€ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Golang RecoveryCrash;
    • Π½Π΅Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΡƒΠ·ΠΊΠΎΡ‚ΠΎ място Π² производитСлността, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ΠΌ Π΄Π΅Ρ‚Π°ΠΉΠ»Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π² CGO.

    Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

    Достигнах Ρ†Π΅Π»Ρ‚Π° си – Ρ€Π°Π·Π±Ρ€Π°Ρ… ΠΎΠ±Π»Π°Ρ‡Π½ΠΈΡ‚Π΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΈ услуги ΠΈ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°, която ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° играя носталгични Ρ€Π΅Ρ‚Ρ€ΠΎ ΠΈΠ³Ρ€ΠΈ с приятСлитС ΠΌΠΈ ΠΎΠ½Π»Π°ΠΉΠ½. Π‘ΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‰Π΅ΡˆΠ΅ Π΄Π° бъдС нСвъзмоТно Π±Π΅Π· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Pion ΠΈ ΠΏΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ°Ρ‚Π° Π½Π° общността Pion. Π˜Π·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ съм Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ Π·Π° ΠΈΠ½Ρ‚Π΅Π½Π·ΠΈΠ²Π½ΠΎΡ‚ΠΎ ΠΌΡƒ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅. ΠŸΡ€ΠΎΡΡ‚ΠΈΡ‚Π΅ API, прСдоставСни ΠΎΡ‚ WebRTC ΠΈ Pion, осигуриха Π³Π»Π°Π΄ΠΊΠ° интСграция. ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ ΠΌΠΈ доказатСлство Π·Π° концСпция бСшС пуснато Π² ΡΡŠΡ‰Π°Ρ‚Π° сСдмица, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ… Π·Π° Π΅Π΄Π½ΠΎΡ€ΠΎΠ³ΠΎΠ²Π° Π²Ρ€ΡŠΠ·ΠΊΠ° (P2P).

    Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ интСграцията Π΅ проста, P2P ΡΡ‚Ρ€ΠΈΠΉΠΌΠΈΠ½Π³ΡŠΡ‚ Π΅ наистина ΠΌΠ½ΠΎΠ³ΠΎ слоТна област Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ°Ρ‚Π°. Π’ΠΎΠΉ сС сблъсква със слоТности, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с многогодишна ΠΌΡ€Π΅ΠΆΠΎΠ²Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, ΠΊΠ°Ρ‚ΠΎ IP ΠΈ NAT, Π·Π° създаванС Π½Π° ΠΏΠΈΡ€οΌˆp2p)сСсия. По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Ρ… ΠΌΠ½ΠΎΠ³ΠΎ Ρ†Π΅Π½Π½ΠΈ знания Π·Π° ΠΌΡ€Π΅ΠΆΠΈΡ‚Π΅ ΠΈ оптимизацията Π½Π° производитСлността, Π·Π°Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π½Π° всички Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚ Π΄Π° изградят P2P ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° WebRTC.

    CloudRetro обслуТва всички сцСнарии Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΎΡ‡Π°ΠΊΠ²Π°Ρ… ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Ρ‚Ρ€ΠΎ-Π³Π΅ΠΉΠΌΡŠΡ€. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, смятам, Ρ‡Π΅ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ области Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π° Π΄Π° подобря, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π° направя ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° ΠΏΠΎ-Π½Π°Π΄Π΅ΠΆΠ΄Π½Π° ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Π°, Π΄Π° осигуря ΠΏΠΎ-високо качСство Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ‚Π° Π½Π° ΠΈΠ³Ρ€ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° сподСлянС Π½Π° ΠΈΠ³Ρ€ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅. Работя ΡƒΡΡŠΡ€Π΄Π½ΠΎ Π²ΡŠΡ€Ρ…Ρƒ Ρ‚ΠΎΠ²Π°. Моля, слСдСтС Π·Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π³ΠΎ ΠΏΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ΅Ρ‚Π΅, Π°ΠΊΠΎ Π²ΠΈ харСсва.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster