په WebRTC کې د خلاصې سرچینې کلاوډ لوبې: p2p، ملټي پلیر، صفر ځنډ

په WebRTC کې د خلاصې سرچینې کلاوډ لوبې: p2p، ملټي پلیر، صفر ځنډ
سافټویر د خدمت په توګه ، زیربنا د خدمت په توګه ، د خدمت په توګه پلیټ فارم ، د خدمت په توګه د مخابراتو پلیټ فارم ، د خدمت په توګه ویډیو کنفرانس کول ، د خدمت په توګه د کلاوډ لوبو په اړه څه؟ لا دمخه د کلاوډ لوبو (کلاؤډ گیمینګ) رامینځته کولو لپاره ډیری هڅې شوي ، لکه سټاډیا ، پدې وروستیو کې د ګوګل لخوا پیل شوی. سټیډیا WebRTC ته نوی ندی، مګر ایا نور کولی شي په ورته ډول WebRTC وکاروي؟

Thanh Nguyen پریکړه وکړه چې دا فرصت د هغه د خلاصې سرچینې پروژې کلاوډ ریټرو کې ازموي. CloudRetro د Pion پر بنسټ والړ دی، مشهور د Go پر بنسټ د WebRTC کتابتون (مننه ښودل شوي د دې مقالې په چمتو کولو کې د دوی د مرستې لپاره د Pion پراختیایی ټیم څخه). په دې مقاله کې، تانه د خپلې پروژې د جوړښت یوه عمومي کتنه وړاندې کوي، او د دې په اړه هم خبرې کوي چې هغه څه ګټور شیان زده کړل او د هغه د کار په جریان کې له کومو ننګونو سره مخ شو.

د ننوتلو

تیر کال، کله چې ګوګل د سټاډیا اعلان وکړ، دا زما ذهن وچ کړ. نظر دومره ځانګړی او نوښتګر دی چې زه په دوامداره توګه حیران وم چې دا د موجوده ټیکنالوژۍ سره څنګه ممکنه وه. د دې موضوع د ښه پوهیدو غوښتنې ما دې ته وهڅول چې د خلاصې سرچینې کلاوډ لوبې خپله نسخه جوړه کړم. پایله یوازې په زړه پوری وه. لاندې زه غواړم د خپل کال د کار کولو پروسه شریکه کړم پروژه.

TLDR: لنډ سلایډ نسخه د ځانګړتیاو سره

ولې د بادل لوبې راتلونکی دی

زه باور لرم چې کلاوډ گیمینګ به ډیر ژر نه یوازې د لوبو راتلونکي نسل شي ، بلکه د کمپیوټر ساینس نورو برخو کې هم. کلاوډ لوبو د پیرودونکي/سرور ماډل سر دی. دا ماډل په ریموټ سرور کې د لوبې منطق کوربه کولو او پیرودونکي ته د عکسونو/آډیو سټینګ کولو له لارې د پس منظر مدیریت اعظمي کوي او د فرنټ اینډ کار کموي. سرور درانه پروسس کوي نو پیرودونکي نور د هارډویر محدودیتونو په رحم کې ندي.

ګوګل سټاډیا لازمي تاسو ته اجازه درکوي لوبې وکړئ AAA لوبې (د بیلګې په توګه د لوړ پای بلاک بسټر لوبې) د یوټیوب په څیر انٹرفیس کې. ورته میتودولوژي په نورو درنو آفلاین غوښتنلیکونو کې پلي کیدی شي لکه عملیاتي سیسټم یا 2D/3D ګرافیک ډیزاین او داسې نور. د دې لپاره چې موږ وکولی شو دوی په څو پلیټ فارمونو کې په دوامداره توګه په ټیټ ځانګړي وسیلو کې پرمخ یوسو.

په WebRTC کې د خلاصې سرچینې کلاوډ لوبې: p2p، ملټي پلیر، صفر ځنډ
د دې ټیکنالوژۍ راتلونکی: تصور وکړئ که مایکروسافټ وینډوز 10 په کروم براوزر کې وګرځي؟

د کلاوډ لوبې کول له تخنیکي پلوه ننګونکي دي

لوبې کول یو له هغو نادرو سیمو څخه دی چیرې چې دوامداره، ګړندي کارونکي ځواب ته اړتیا وي. که کله کله موږ په یوه پاڼه کې د کلیک کولو په وخت کې د 2 ثانیو ځنډ سره مخ شو، دا د منلو وړ ده. د ژوندۍ ویډیو جریانونه یو څو ثانیې وروسته پاتې کیږي ، مګر لاهم د مناسب کارونې وړاندیز کوي. که څه هم، که لوبه په مکرر ډول د 500ms لخوا وروسته پاتې وي، دا په ساده ډول د لوبې وړ نه ده. زموږ هدف د خورا ټیټ ځنډ ترلاسه کول دي ترڅو د ان پټ او میډیا ترمینځ واټن د امکان تر حده کوچنی وي. له همدې امله، د ویډیو سټینګ کولو دودیز چلند دلته د تطبیق وړ ندی.

په WebRTC کې د خلاصې سرچینې کلاوډ لوبې: p2p، ملټي پلیر، صفر ځنډ
د عمومي کلاوډ لوبې کينډۍ

د خلاصې سرچینې پروژه CloudRetro

ما پریکړه وکړه چې د بادل لوبې ازموینې نمونه رامینځته کړم ترڅو وګورم چې ایا دا ټول د داسې سخت شبکې محدودیتونو سره امکان لري. ما د مفکورې د ثبوت لپاره ګولنګ غوره کړ ځکه چې دا هغه ژبه وه چې زه ورسره ډیر پیژنم او د ډیری نورو دلیلونو لپاره د دې پلي کولو لپاره مناسبه وه، لکه څنګه چې ما وروسته وموندله. تګ ساده دی او په چټکۍ سره وده کوي؛ په Go کې چینلونه د ملټي ریډینګ اداره کولو لپاره عالي دي.

پروژه CloudRetro.io د ریټرو لوبو لپاره د خلاصې سرچینې کلاوډ لوبو خدمت دی. د پروژې هدف دا دی چې دودیز ریټرو لوبو ته د لوبو خورا راحته تجربه راوړي او ملټي پلیر اضافه کړي.
تاسو کولی شئ دلته د پروژې په اړه نور معلومات زده کړئ: https://github.com/giongto35/cloud-game.

د CloudRetro فعالیت

کلاوډ ریټرو د کلاوډ لوبو ځواک ښودلو لپاره ریٹرو لوبې کاروي. کوم چې تاسو ته اجازه درکوي د لوبو ډیری ځانګړي تجربې ترلاسه کړئ.

  • د لوبې وړتیا
    • سمدستي پلې بیک کله چې یوه پاڼه خلاصیږي؛ هیڅ ډاونلوډ یا نصب ته اړتیا نشته
    • په ګرځنده براوزر کې کار کوي، نو د دې چلولو لپاره هیڅ سافټویر ته اړتیا نشته

  • د لوبې سیشنونه په ډیری وسیلو کې شریک کیدی شي او د بل ځل لپاره چې تاسو لاګ ان شئ په کلاوډ کې زیرمه کیدی شي
  • لوبه جریان کیدی شي ، یا دا په یوځل کې د ډیری کاروونکو لخوا لوبیدلی شي:
    • کراوډ پلی لکه TwitchPlayPokemon، یوازې ډیر کراس پلیټ فارم او ډیر ریښتیني وخت
    • آنلاین آنلاین لوبې. ډیری کاروونکي کولی شي د شبکې تنظیم کولو پرته لوبې وکړي. سامورای شوډون اوس د CloudRetro شبکې له لارې د 2 لوبغاړو لخوا لوبیدلی شي

    په WebRTC کې د خلاصې سرچینې کلاوډ لوبې: p2p، ملټي پلیر، صفر ځنډ
    په مختلف وسیلو کې د آنلاین ملټي پلیر لوبې ډیمو نسخه

    زیربنا

    اړتیاوې او د ټیکنالوژۍ سټیک

    لاندې د اړتیاو لیست دی چې ما د پروژې پیل کولو دمخه تنظیم کړی.

    1. یو لوبغاړی
    دا اړتیا ممکن دلته خورا مهم یا څرګند نه ښکاري ، مګر دا زما یو له کلیدي لارو څخه دی ، دا د کلاوډ لوبو ته اجازه ورکوي چې د امکان تر حده د دودیز سټیمینګ خدماتو څخه لرې پاتې شي. که موږ په یو واحد لوبغاړي لوبې تمرکز وکړو، موږ کولی شو له مرکزي سرور یا CDN څخه ځان خلاص کړو ځکه چې موږ اړتیا نلرو خلکو ته جریان ورکړو. د سنک سرور ته د جریانونو اپلوډ کولو یا مرکزي ویب ساکټ سرور ته د پیکټونو لیږدولو پرځای ، د خدماتو جریان مستقیم کارونکي ته د peer-to-peer WebRTC اتصال له لارې سپارل کیږي.

    2. د ټیټ ځنډ میډیا جریان
    د سټاډیا په اړه لوستل، زه ډیری وختونه ګورم WebRTC په ځینو مقالو کې ذکر شوي. ما پوهیده چې WebRTC یوه غوره ټیکنالوژي ده او په کلاوډ لوبو کې د کارولو لپاره مناسبه ده. WebRTC یوه پروژه ده چې ویب براوزرونه او ګرځنده غوښتنلیکونه د ساده API له لارې د ریښتیني وخت اړیکې سره چمتو کوي. دا د پییر-ټو پییر ارتباط چمتو کوي ، د میډیا لپاره مطلوب دی ، او معیاري کوډیکونه لري لکه VP8 او H264 جوړ شوي.

    ما د لوړ کیفیت ګرافیک ساتلو په اړه د غوره احتمالي کارونکي تجربې ډاډ ترلاسه کولو ته لومړیتوب ورکړ. ځینې ​​زیانونه په الګوریتم کې د منلو وړ دي. ګوګل سټاډیا په سرور کې د عکس اندازې کمولو اضافي ګام لري ، او چوکاټونه ملګرو ته د لیږدولو دمخه لوړ کیفیت ته لوړ شوي.

    3. د جغرافیایي لارې سره د زیربنا ویشل
    مهمه نده چې د کمپریشن الګوریتم او کوډ څومره مطلوب دی ، شبکه لاهم پریکړه کونکی فاکتور دی چې په ځنډ کې خورا مرسته کوي. جوړښت باید یو میکانیزم ولري چې کارونکي ته نږدې سرور سره یوځای کړي ترڅو د دورې سفر وخت کم کړي (RTT). جوړښت باید 1 همغږي کونکی او ډیری سټیمینګ سرورونه ولري چې په ټوله نړۍ کې توزیع شوي: د متحده ایالاتو لویدیز ، د متحده ایالاتو ختیځ ، اروپا ، سینګاپور ، چین. ټول سټیمینګ سرورونه باید په بشپړ ډول جلا شي. سیسټم کولی شي خپل توزیع تنظیم کړي کله چې سرور له شبکې سره یوځای شي یا پریږدي. په دې توګه، د لوی ترافیک سره، د اضافي سرورونو اضافه کول د افقی اندازه کولو لپاره اجازه ورکوي.

    4. د براوزر مطابقت
    د کلاوډ لوبې کول خورا ښه دي کله چې دا د کاروونکو څخه لږترلږه اړتیا لري. دا پدې مانا ده چې په براوزر کې چلول ممکن دي. براوزر د کاروونکو لپاره د امکان تر حده د لوبو تجربه راحته کولو کې مرسته کوي ، دوی د سافټویر او هارډویر نصبولو څخه خوندي کوي. براوزر د ګرځنده او ډیسټاپ نسخو ترمینځ د کراس پلیټ فارم فعالیت چمتو کولو کې هم مرسته کوي. خوشبختانه، WebRTC په مختلفو براوزرونو کې ښه ملاتړ شوی.

    5. د لوبې انٹرفیس او خدمت روښانه جلا کول
    زه د کلاوډ لوبو خدمت د پلیټ فارم په توګه ګورم. هرڅوک باید وکوالی شي هر څه د پلیټ فارم سره وصل کړي. اوس زه یوځای شوی یم لیبر ریرو د کلاوډ لوبو خدمت سره ځکه چې لیبریټرو د ریټرو لوبو لکه SNES ، GBA ، PS لپاره د ښکلي لوبې ایمولیټر انٹرفیس وړاندیز کوي.

    6. د ملټي پلیر لپاره خونې، د خلکو لوبې او د لوبې سره بهرنۍ اړیکې (ژور لینک).
    CloudRetro د ریټرو لوبو لپاره د ډیری نوي لوبو لکه CrowdPlay او آنلاین ملټي پلیر ملاتړ کوي. که څو کاروونکي په مختلفو کمپیوټرونو کې ورته ژور لینک خلاص کړي، دوی به ورته روانه لوبه وګوري او حتی د دې توان ولري چې یوځای شي.

    سربیره پردې ، د لوبې حالتونه په کلاوډ ذخیره کې زیرمه شوي. دا کاروونکو ته اجازه ورکوي چې هر وخت په کوم بل وسیله لوبې کولو ته دوام ورکړي.

    7. افقی اندازه کول
    نن ورځ د هر SAAS په څیر، د کلاوډ لوبې باید په افقی ډول د توزیع وړ وي. د همغږي کونکي - کارګر ډیزاین تاسو ته اجازه درکوي نور کارګران اضافه کړئ ترڅو نور ترافیک خدمت کړي.

    8. د یو بادل سره هیڅ اړیکه نشته
    د کلاوډ ریټرو زیربنا د مختلف کلاوډ چمتو کونکو (ډیجیټل سمندر ، علی بابا ، دودیز چمتو کونکي) د مختلف سیمو لپاره کوربه توب کیږي. زه د زیربنا لپاره د ډاکر کانټینر کې چلولو وړوم او د باش سکریپټ په کارولو سره د شبکې تنظیمات تنظیم کوم ترڅو په یو واحد کلاوډ چمتو کونکي کې د بندیدو مخه ونیول شي. په WebRTC کې د NAT ټراورسل سره په یوځای کولو سره، موږ کولی شو په هر کلاوډ پلیټ فارم او حتی د هر کارونکي ماشینونو کې د کلاوډ ریټرو ځای په ځای کولو کې انعطاف ولري.

    معماري ډیزاین

    کارګر: (یا پورته ذکر شوي سټیمینګ سرور) لوبې ضربوي، د کوډ کولو پایپ لاین پرمخ وړي، او کاروونکو ته کوډ شوي میډیا خپروي. د کارګر مثالونه په ټوله نړۍ کې ویشل شوي، او هر کارګر کولی شي په ورته وخت کې ډیری کاروونکي ناستې اداره کړي.

    همغږي کوونکی: د نوي کارونکي د سټیمینګ لپاره ترټولو مناسب کارګر سره د یوځای کولو مسؤلیت لري. همغږي کونکی د ویب ساکټ له لارې د کارمندانو سره اړیکه نیسي.

    د لوبې دولتي ذخیره: د ټولو لوبو ایالتونو لپاره مرکزي ریموټ ذخیره. دا ذخیره مهم فعالیتونه وړاندې کوي لکه د ریموټ خوندي کول/لوډ.

    په WebRTC کې د خلاصې سرچینې کلاوډ لوبې: p2p، ملټي پلیر، صفر ځنډ
    د CloudRetro د لوړې کچې جوړښت

    دودیز سکریپټ

    کله چې یو نوی کاروونکی په لاندې شکل کې ښودل شوي په 1 او 2 مرحلو کې CloudRetro خلاصوي، همغږي کوونکي د شته کارمندانو لیست سره لومړی مخ ته غوښتل کیږي. له دې وروسته، په 3 مرحله کې پیرودونکي د HTTP پینګ غوښتنې په کارولو سره د ټولو کاندیدانو لپاره ځنډ محاسبه کوي. د ځنډونو دا لیست بیا همغږي کونکي ته لیږل کیږي ترڅو هغه وکولی شي د کارونکي خدمت لپاره ترټولو مناسب کارمند وټاکي. مرحله 4 لاندې لوبه رامینځته کوي. د WebRTC سټیمینګ اړیکه د کارونکي او ګمارل شوي کارمند ترمینځ رامینځته کیږي.
    په WebRTC کې د خلاصې سرچینې کلاوډ لوبې: p2p، ملټي پلیر، صفر ځنډ
    د لاسرسي ترلاسه کولو وروسته د کارن سکریپټ

    د کارګر دننه څه شی دی

    د لوبې او سټیمینګ پایپ لاینونه د کارګر دننه په انزوا کې زیرمه شوي او د انٹرفیس له لارې هلته معلومات تبادله کوي. اوس مهال، دا اړیکه د حافظې له لارې د معلوماتو لیږدولو سره ترسره کیږي ګولنګ چینلونه په ورته پروسه کې. راتلونکی هدف جلا کول دي، د بیلګې په توګه. په بله پروسه کې د لوبې خپلواکه پیل کول.

    په WebRTC کې د خلاصې سرچینې کلاوډ لوبې: p2p، ملټي پلیر، صفر ځنډ
    د کارګر اجزاو تعامل

    اصلي اجزا:

    • WebRTC: د پیرودونکي اجزا چې د کارونکي داخله مني او له سرور څخه کوډ شوي میډیا تولیدوي.
    • د لوبې ایمولیټر: د لوبې برخه. د لیبرټرو کتابتون څخه مننه ، سیسټم د ورته پروسې دننه لوبې پرمخ وړي او په داخلي توګه میډیا او ان پټ جریان مداخله کوي.
    • د لوبې چوکاټونه نیول شوي او کوډ کونکي ته لیږل کیږي.
    • انځور/آډیو کوډګر: د کوډ کولو پایپ لاین چې د میډیا چوکاټونه اخلي ، په شالید کې یې کوډ کوي ، او کوډ شوي عکسونه/آډیو تولیدوي.

    پلي کول

    CloudRetro په WebRTC باندې د خپل ریښې ټیکنالوژۍ په توګه تکیه کوي، نو مخکې له دې چې د ګولنګ پلي کولو توضیحاتو ته لاړ شم، ما پریکړه وکړه چې پخپله د WebRTC په اړه وغږیږم. دا په زړه پوری ټیکنالوژي ده چې ما سره د سټیمینګ ډیټا لپاره د فرعي دوهم ځنډ ترلاسه کولو کې خورا مرسته کړې.

    WebRTC

    WebRTC ډیزاین شوی ترڅو د ساده APIs په کارولو سره په اصلي ګرځنده ایپسونو او براوزرونو کې د لوړ کیفیت پییر-ټو-پییر اړیکې چمتو کړي.

    NAT ټراورسل

    WebRTC د خپل NAT ټراورسل فعالیت لپاره پیژندل شوی. WebRTC د ملګرو سره د اړیکو لپاره ډیزاین شوی. د دې هدف دا دی چې ترټولو مناسبه مستقیمه لاره ومومي، د پروسې له لارې د ملګرو سره د اړیکو لپاره د NAT دروازې او اور وژونکو څخه مخنیوی وشي. کمسيون. د دې پروسې د یوې برخې په توګه، WebRTC APIs ستاسو عامه IP پته د STUN سرورونو په کارولو سره لټوي او د ریل سرور ته یې لیږدوي (تور) کله چې مستقیم اړیکه نشي رامینځته کیدی.

    په هرصورت، CloudRetro د دې خصوصیت څخه په بشپړه توګه ګټه نه اخلي. د دې د ملګري سره اړیکې د کاروونکو ترمینځ شتون نلري ، مګر د کاروونکو او کلاوډ سرورونو ترمینځ. د ماډل سرور اړخ د یو عادي کارونکي وسیلې په پرتله لږ مستقیم مخابراتو محدودیتونه لري. دا تاسو ته اجازه درکوي چې راتلونکی بندرونه پری پرانیزئ یا مستقیم عامه IP پتې وکاروئ ، ځکه چې سرور د NAT شاته نه دی.

    مخکې، ما غوښتل چې پروژه د کلاوډ لوبو لپاره د لوبې توزیع پلیټ فارم ته واړوم. نظر دا و چې د لوبې جوړونکو ته اجازه ورکړي چې لوبې او سټرینګ سرچینې چمتو کړي. او کاروونکي به مستقیم له چمتو کونکو سره اړیکه ونیسي. په دې غیر متمرکز ډول، CloudRetro یوازې یو چوکاټ دی چې د دریمې ډلې سټیمینګ سرچینې کاروونکو ته وصل کړي، دا نور د توزیع وړ کوي کله چې دا نور کوربه نه وي. د WebRTC NAT ټراورسل رول دلته خورا مهم دی ترڅو د دریمې ډلې سټیمینګ سرچینو کې د پیر-ټو-پییر اتصال پیل اسانه کړي ، د جوړونکي لپاره دا اسانه کوي چې له شبکې سره وصل شي.

    د ویډیو کمپریشن

    د ویډیو کمپریشن د پایپ لاین یوه لازمي برخه ده او په اسانه جریان کې خورا مرسته کوي. پداسې حال کې چې دا اړینه نده چې د VP8 / H264 ویډیو کوډ کولو هر توضیحاتو پوه شئ ، د مفاهیمو پوهیدل تاسو سره د ویډیو سرعت اختیارونو په پوهیدو کې مرسته کولی شي ، غیر متوقع چلند ډیبګ کړئ ، او ځنډ تنظیم کړئ.

    د سټیمینګ خدمت لپاره د ویډیو کمپریس کول ننګونه ده ځکه چې الګوریتم باید ډاډ ترلاسه کړي چې د کوډ کولو ټول وخت + د شبکې لیږد وخت + د کوډ کولو وخت د امکان تر حده ټیټ دی. سربیره پردې، د کوډ کولو پروسه باید دوامداره او دوامداره وي. د کوډ کولو ځینې تجارتونه نه پلي کیږي — د مثال په توګه ، موږ نشو کولی د کوچني فایل اندازې او کوډ کولو وختونو کې د اوږدې کوډ کولو وخت خوښ کړو ، یا متضاد کمپریشن وکاروو.

    د ویډیو کمپریشن تر شا نظر د معلوماتو غیر ضروري بټونه له مینځه وړل دي پداسې حال کې چې د کاروونکو لپاره د منلو وړ کچې دقت ساتل دي. د انفرادي جامد عکس چوکاټونو کوډ کولو برسیره، الګوریتم د تیرو او راتلونکو څخه اوسنی چوکاټ په ګوته کوي، نو یوازې د دوی توپیر لیږل کیږي. لکه څنګه چې د Pacman سره د مثال څخه لیدل کیدی شي، یوازې توپیر ټکي لیږدول کیږي.

    په WebRTC کې د خلاصې سرچینې کلاوډ لوبې: p2p، ملټي پلیر، صفر ځنډ
    د مثال په توګه د Pacman په کارولو سره د ویډیو چوکاټونو پرتله کول

    د آډیو کمپریشن

    په ورته ډول، د آډیو کمپریشن الګوریتم هغه معلومات پریږدي چې د انسانانو لخوا درک نه شي. Opus اوس مهال غوره فعالیت کوونکی آډیو کوډیک دی. دا د امر شوي ډیټاګرام پروتوکول لکه RTP (ریښتیني وخت ټرانسپورټ پروتوکول) کې د آډیو څپې لیږدولو لپاره ډیزاین شوی. د دې ځنډ د mp3 او aac څخه ټیټ دی، او کیفیت یې لوړ دی. ځنډ معمولا د 5 ~ 66,5ms شاوخوا وي.

    Pion، WebRTC په ګولنګ کې

    پیاده د خلاصې سرچینې پروژه ده چې WebRTC ګولنګ ته راوړي. د اصلي C++ WebRTC کتابتونونو د معمول ریپ کولو پرځای، Pion د WebRTC پروتوکولونو کې د غوره فعالیت، Go ادغام، او نسخه کنټرول سره د WebRTC اصلي ګولنګ تطبیق دی.

    کتابتون د فرعي دوهم ځنډ سره د ډیری عالي جوړ شوي انزونو سره سټرینګ هم وړوي. دا د STUN، DTLS، SCTP، او نورو خپل تطبیق لري. او د QUIC او WebAssembly سره ځینې تجربې. دا د خلاصې سرچینې کتابتون پخپله د عالي اسنادو ، د شبکې پروتوکول پلي کولو ، او غوره مثالونو سره واقعیا د زده کړې یوه ښه سرچینه ده.

    د Pion ټولنه، د یو ډیر په زړه پوري جوړونکي لخوا رهبري کیږي، خورا ژوندی دی، د WebRTC په اړه ډیری کیفیت لرونکي بحثونه روان دي. که تاسو د دې ټیکنالوژۍ سره علاقه لرئ، ګډون وکړئ http://pion.ly/slack - تاسو به ډیر نوي شیان زده کړئ.

    په ګولنګ کې د CloudRetro لیکل

    په WebRTC کې د خلاصې سرچینې کلاوډ لوبې: p2p، ملټي پلیر، صفر ځنډ
    په Go کې د کارګر پلي کول

    په عمل کې چینلونو ته لاړ شئ

    د Go د ښکلي چینل ډیزاین څخه مننه ، د پیښې سټیمینګ او همغږي ستونزې خورا ساده شوي. لکه څنګه چې په ډیاګرام کې، مختلف GoRoutines ډیری برخې لري چې په موازي توګه پرمخ ځي. هره برخه خپل حالت اداره کوي او د چینلونو له لارې اړیکه نیسي. د ګولنګ انتخابي ادعا یو اټومي پیښه مجبوروي چې په لوبه کې هر وخت پروسس شي (د لوبې ټک). دا پدې مانا ده چې د دې ډیزاین لپاره هیڅ تالاشۍ ته اړتیا نشته. د مثال په توګه، کله چې یو کاروونکي خوندي کوي، د لوبې حالت بشپړ سنیپ شاټ ته اړتیا ده. دا حالت باید دوامدار پاتې شي، د خوندي کولو بشپړیدو پورې ننوتل. د هرې لوبې ټیک په جریان کې ، بیک انډ یوازې د خوندي کولو یا ان پټ عملیات اداره کولی شي ، د پروسې تار خوندي کوي.

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

    fan-in/fan-out

    دا ګولنګ ټیمپلیټ زما د CrowdPlay او څو پلیر کارولو قضیه په بشپړ ډول فټ کوي. د دې نمونې په تعقیب، په یوه خونه کې د کاروونکي ټول معلومات د مرکزي ننوتلو چینل ته جوړ شوي. د لوبې میډیا بیا په ورته خونه کې ټولو کاروونکو ته ګمارل کیږي. پدې توګه ، موږ د مختلف کاروونکو ډیری لوبو غونډو ترمینځ د لوبې حالت ویش ترلاسه کوو.

    په WebRTC کې د خلاصې سرچینې کلاوډ لوبې: p2p، ملټي پلیر، صفر ځنډ
    د مختلفو غونډو ترمنځ همغږي کول

    د ګولنګ زیانونه

    ګولنګ کامل نه دی. چینل سست دی. د بلاک کولو په پرتله ، د ګو چینل په ساده ډول د سمو او موضوعي پیښو اداره کولو لپاره اسانه لار ده ، مګر چینل غوره فعالیت نه وړاندې کوي. د چینل لاندې پیچلي بلاک کولو منطق شتون لري. نو ما پلي کولو کې ځینې سمونونه رامینځته کړل ، د تالاشۍ بیا پلي کول او اټومي ارزښتونه کله چې د فعالیت غوره کولو لپاره چینلونه ځای په ځای کول.

    سربیره پردې، په ګولنګ کې د کثافاتو راټولونکي غیر منظم دي چې ځینې وختونه د شکمن اوږد ځنډ لامل کیږي. دا د ریښتیني وخت سټیمینګ غوښتنلیک سره خورا مداخله کوي.

    COG

    پروژه د میډیا کمپریشن او لیبرټرو لپاره د لوبې ایمولیټرونو لپاره موجوده خلاصې سرچینې ګولنګ VP8/H264 کتابتون کاروي. دا ټول کتابتونونه په ساده ډول په Go کارولو کې د C کتابتون ریپرونه دي COG. ځینې ​​نیمګړتیاوې په کې لیست شوي دي دا پوسټ د ډیو چیني لخوا. هغه ستونزې چې ما ورسره مخامخ کړې:

    • په CGO کې د حادثې د نیولو توان نلري، حتی د ګولنګ ریکوری کریش سره؛
    • د فعالیت خنډونو په پیژندلو کې ناکامي کله چې موږ نشو کولی په CGO کې مفصلې ستونزې کشف کړو.

    پایلې

    ما د کلاوډ لوبو خدماتو درک کولو او داسې پلیټ فارم رامینځته کولو خپل هدف ترلاسه کړ چې ما سره مرسته کوي د خپلو ملګرو سره آنلاین نوسټالیجیک ریټرو لوبې لوبوي. دا پروژه به د Pion کتابتون او د Pion ټولنې له ملاتړ پرته ممکنه نه وه. زه د هغې د ژور پرمختګ لپاره ډیره مننه کوم. د WebRTC او Pion لخوا چمتو شوي ساده APIs بې سیمه ادغام تضمینوي. زما د مفکورې لومړی ثبوت په هماغه اونۍ کې خپور شو، که څه هم زه د پییر-ټو-پییر (P2P) مخابراتو دمخه هیڅ پوهه نه درلوده.

    د ادغام اسانتیا سره سره، د P2P سټرینګ واقعیا د کمپیوټر ساینس کې خورا پیچلې ساحه ده. هغه باید د اوږدې مودې شبکې جوړښتونو پیچلتیا سره معامله وکړي لکه IP او NAT ترڅو د ملګري ناستې رامینځته کړي. په دې پروژه کې د کار کولو پرمهال، ما د شبکې جوړولو او د فعالیت د اصلاح کولو په اړه خورا ارزښتناکه پوهه ترلاسه کړه، نو زه هرڅوک هڅوم چې د WebRTC په کارولو سره د P2P محصولاتو جوړولو هڅه وکړي.

    کلاوډ ریټرو د کارونې ټولې قضیې پوره کوي چې ما د ریٹرو ګیمر په توګه زما له لید څخه تمه درلوده. په هرصورت، زه فکر کوم چې په پروژه کې ډیری ساحې شتون لري چې زه یې وده کولی شم، لکه د شبکې ډیر باوري او فعالیت کول، د لوړ کیفیت لوبې ګرافیک چمتو کول، یا د کاروونکو ترمنځ د لوبو شریکولو وړتیا. زه پدې اړه سخت کار کوم. مهرباني وکړئ تعقیب کړئ پروژه او که مو خوښه شوه ملاتړ یې کړئ.

سرچینه: www.habr.com

Add a comment