Cheerp, WebRTC, Firebase เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต C++ เตฝ เดจเดฟเดจเตเดจเต เดตเต†เดฌเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดฎเตพเดŸเตเดŸเดฟเดชเตเดฒเต†เดฏเตผ เด—เต†เดฏเดฟเด‚ เดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เด†เดฎเตเด–เด‚

เดžเด™เตเด™เดณเตเดŸเต† เดธเตเดฅเดพเดชเดจเด‚ เดšเดพเดฏเตเดจเตเดจ เดธเดพเด™เตเด•เต‡เดคเดฟเด•เดตเดฟเดฆเตเดฏเด•เตพ เดชเดฐเดฎเตเดชเดฐเดพเด—เดค เดกเต†เดธเตเด•เตเดŸเต‹เดชเตเดชเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดตเต†เดฌเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ เดจเตฝเด•เตเดจเตเดจเต. เดžเด™เตเด™เดณเตเดŸเต† C++ เด•เดฎเตเดชเตˆเดฒเตผ เด†เดนเตเดฒเดพเดฆเดฟเด•เตเด•เตเด• WebAssembly, JavaScript เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดธเด‚เดฏเต‹เดœเดจเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เดฐเดฃเตเดŸเตเด‚ เดจเตฝเด•เตเดจเตเดจเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดฌเตเดฐเต—เดธเตผ เด‡เดŸเดชเต†เดŸเตฝ, เด‰เดฏเตผเดจเตเดจ เดชเตเดฐเด•เดŸเดจเด‚.

เด…เดคเดฟเตปเตเดฑเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตปเตเดฑเต† เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ, เดตเต†เดฌเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดฎเตพเดŸเตเดŸเดฟเดชเตเดฒเต†เดฏเตผ เด—เต†เดฏเดฟเด‚ เดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเดคเตเดคเต เดŸเต€ เดตเต‡เตพเดกเตเดธเต. เดšเต†เดฑเตเดคเตเด‚ เดŽเดจเตเดจเดพเตฝ เดธเดœเต€เดตเดตเตเดฎเดพเดฏ เด•เดณเดฟเด•เตเด•เดพเดฐเตเดŸเต† (เดžเดพเดจเตเด‚ เด‰เตพเดชเตเดชเต†เดŸเต†!) เด‰เดณเตเดณ เด’เดฐเต เดฎเตพเดŸเตเดŸเดฟเดชเตเดฒเต†เดฏเตผ 2D เดฑเต†เดŸเตเดฐเต‹ เด—เต†เดฏเดฟเดฎเดพเดฃเต Teeworlds. เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตโ€Œเดค เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดธเดฟเดชเดฟเดฏเต, เดœเดฟเดชเดฟเดฏเต เด†เดตเดถเตเดฏเด•เดคเด•เดณเตเดŸเต†เดฏเตเด‚ เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เด‡เดคเต เดšเต†เดฑเตเดคเดพเดฃเต - เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฏ เด’เดฐเต เด•เดพเตปเดกเดฟเดกเต‡เดฑเตเดฑเต.

Cheerp, WebRTC, Firebase เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต C++ เตฝ เดจเดฟเดจเตเดจเต เดตเต†เดฌเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดฎเตพเดŸเตเดŸเดฟเดชเตเดฒเต†เดฏเตผ เด—เต†เดฏเดฟเด‚ เดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต
Teeworlds เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต

เดชเดฐเต€เด•เตเดทเดฃเดคเตเดคเดฟเดจเดพเดฏเดฟ เดˆ เดชเดฆเตเดงเดคเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เด•เต‹เดกเต เดตเต†เดฌเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเตŠเดคเตเดตเดพเดฏ เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ. เด‡เดคเต เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดฐเต€เดคเดฟเด•เดณเดฟเดฒเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต:

  • XMLHttpRequest/fetch, เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดญเดพเด—เด‚ HTTP เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ
  • เดตเต†เดฌเตโ€Œเดธเต‹เด•เตเด•เดฑเตเดฑเตเด•เตพ.

เดฐเดฃเตเดŸเต เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพเด•เตเด•เตเด‚ เดธเต†เตผเดตเตผ เดตเดถเดคเตเดคเต เด’เดฐเต เดธเต†เตผเดตเตผ เด˜เดŸเด•เด‚ เดนเต‹เดธเตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด•เต‚เดŸเดพเดคเต† เด—เดคเดพเด—เดค เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ UDP. เดตเต€เดกเดฟเดฏเต‹ เด•เต‹เตบเดซเดฑเตปเดธเดฟเด‚เด—เต เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเดฑเตเด‚ เด—เต†เดฏเดฟเดฎเตเด•เดณเตเด‚ เดชเต‹เดฒเตเดณเตเดณ เดคเดคเตเดธเดฎเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เต เด‡เดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต, เด•เดพเดฐเดฃเด‚ เด‡เดคเต เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต† เดกเต†เดฒเดฟเดตเดฑเดฟเด•เตเด•เตเด‚ เด“เตผเดกเดฑเดฟเดจเตเด‚ เด‰เดฑเดชเตเดชเต เดจเตฝเด•เตเดจเตเดจเต TCP เด•เตเดฑเดžเตเดž เดฒเต‡เดฑเตเดฑเตปเดธเดฟเด•เตเด•เต เด’เดฐเต เดคเดŸเดธเตเดธเดฎเดพเดฏเดฟ เดฎเดพเดฑเดฟเดฏเต‡เด•เตเด•เดพเด‚.

เดฎเต‚เดจเตเดจเดพเดฎเดคเตเดคเต† เดตเดดเดฟเดฏเตเดฃเตเดŸเต - เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•: WebRTC.

RTCDataChannel เด‡เดคเต เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดตเตเด‚ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดฎเดฒเตเดฒเดพเดคเตเดคเดคเตเดฎเดพเดฏ เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดทเดจเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเต (เดชเดฟเดจเตเดจเต€เดŸเตเดณเตเดณ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดธเดพเดงเตเดฏเดฎเดพเด•เตเดฎเตเดชเต‹เดดเต†เดฒเตเดฒเดพเด‚ เดฏเตเดกเดฟเดชเดฟ เด’เดฐเต เดŸเตเดฐเดพเตปเดธเตเดชเต‹เตผเดŸเตเดŸเต เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด‡เดคเต เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเต), เด•เต‚เดŸเดพเดคเต† เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดธเต†เตผเดตเดฑเดฟเดฒเตเด‚ เดฌเตเดฐเต—เดธเดฑเตเด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเดฒเตเด‚ เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เดธเต†เตผเดตเตผ เด˜เดŸเด•เด‚ เด‰เตพเดชเตเดชเต†เดŸเต† เดฎเตเดดเตเดตเตป เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด‚ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเด‚ เดŽเดจเตเดจเดพเดฃเต เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚!

เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด‡เดคเต เด’เดฐเต เด…เดงเดฟเด• เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเต‹เดŸเต†เดฏเดพเดฃเต เดตเดฐเตเดจเตเดจเดคเต: เดฐเดฃเตเดŸเต WebRTC เดชเดฟเดฏเตผ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดจเดŸเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดคเดพเดฐเดคเดฎเตเดฏเต‡เดจ เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เด’เดฐเต เดนเดพเตปเดกเตโ€Œเดทเต‡เด•เตเด•เต เดจเดŸเดคเตเดคเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด‡เดคเดฟเดจเต เดจเดฟเดฐเดตเดงเดฟ เดฎเต‚เดจเตเดจเดพเด‚ เด•เด•เตเดทเดฟ เดŽเตปเตเดฑเดฟเดฑเตเดฑเดฟเด•เตพ (เด’เดฐเต เดธเดฟเด—เตเดจเดฒเดฟเด‚เด—เต เดธเต†เตผเดตเดฑเตเด‚ เด’เดจเตเดจเต‹ เด…เดคเดฟเดฒเดงเดฟเด•เดฎเต‹ เดธเต†เตผเดตเดฑเตเด•เดณเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต. STUN/เดตเดณเดตเต).

เดฎเดฟเด•เดšเตเดš เดฐเต€เดคเดฟเดฏเดฟเตฝ, WebRTC เด†เดจเตเดคเดฐเดฟเด•เดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต API เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เด•เดฃเด•เตเดทเตป เดธเตเดฅเดพเดชเดฟเด•เตเด•เต‡เดฃเตเดŸ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดค UDP เดธเต‹เด•เตเด•เดฑเตเดฑเต เด‡เตปเตเดฑเตผเดซเต‡เดธเดฟเดจเต‹เดŸเต เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เด…เดŸเตเดคเตเดคเดพเดฃเต เด‡เดคเต.

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เต‹เดกเดฟเดฒเต‡เด•เตเด•เต เดธเด™เตเด•เต€เตผเดฃเตเดฃเดฎเดพเดฏ เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เดตเต†เดณเดฟเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดคเต† เดคเดจเตเดจเต† WebRTC เดชเตเดฐเดฏเต‹เดœเดจเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เด‡เดคเต เดžเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚ (เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตฝ เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เด•เตเดฑเดšเตเดšเต เดฎเดพเดฑเตเดฑเดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเดšเตเดšเต).

เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดž WebRTC

เด“เดกเดฟเดฏเต‹, เดตเต€เดกเดฟเดฏเต‹, เด†เตผเดฌเดฟเดŸเตเดฐเดฑเดฟ เดกเดพเดฑเตเดฑ เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดชเดฟเดฏเตผ-เดŸเต-เดชเดฟเดฏเตผ เดŸเตเดฐเดพเตปเดธเตเดฎเดฟเดทเตป เดจเตฝเด•เตเดจเตเดจ เดฌเตเดฐเต—เดธเดฑเตเด•เดณเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฏ API-เด•เดณเตเดŸเต† เด’เดฐเต เด•เต‚เดŸเตเดŸเดฎเดพเดฃเต WebRTC.

ICE เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดธเด‚เดตเดฟเดงเดพเดจเด‚ เดตเดดเดฟ STUN เด•เต‚เดŸเดพเดคเต†/เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ TURN เดธเต†เตผเดตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเดฎเดชเตเดฐเดพเดฏเด•เตเด•เดพเตผ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดฌเดจเตเดงเด‚ เดธเตเดฅเดพเดชเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต (เด’เดจเตเดจเต‹ เด‡เดฐเตเดตเดถเดคเตเดคเต‹ NAT เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ เดชเต‹เดฒเตเด‚). SDP เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เดณเดฟเตปเตเดฑเต† เด“เดซเดฑเตเด‚ เด‰เดคเตเดคเดฐเดตเตเด‚ เดตเดดเดฟ เดธเดฎเดชเตเดฐเดพเดฏเด•เตเด•เดพเตผ ICE เดตเดฟเดตเดฐเด™เตเด™เดณเตเด‚ เดšเดพเดจเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเด‚ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต.

เดตเต—! เด’เดฐเต‡ เดธเดฎเดฏเด‚ เดŽเดคเตเดฐ เดšเตเดฐเตเด•เตเด•เต†เดดเตเดคเตเดคเตเด•เตพ? เดˆ เดชเดฆเด™เตเด™เตพ เดŽเดจเตเดคเดพเดฃเต เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต เดŽเดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดšเตเดฐเตเด•เตเด•เดฎเดพเดฏเดฟ เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เดพเด‚:

  • NAT-เดจเตเดณเตเดณ เดธเต†เดทเตป เดŸเตเดฐเดพเดตเต‡เตผเดธเตฝ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเด•เตพ (STUN) โ€” NAT เดฌเตˆเดชเดพเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เดนเต‹เดธเตเดฑเตเดฑเตเดฎเดพเดฏเดฟ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดœเต‹เดŸเดฟ (IP, เดชเต‹เตผเดŸเตเดŸเต) เดจเต‡เดŸเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เด’เดฐเต เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ. เด…เดตเตป เดคเตปเตเดฑเต† เดšเตเดฎเดคเดฒ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดฟเดฏเดพเตฝ, เดธเดฎเดชเตเดฐเดพเดฏเด•เตเด•เดพเตผเด•เตเด•เต เดธเตเดตเดคเดจเตเดคเตเดฐเดฎเดพเดฏเดฟ เดชเดฐเดธเตเดชเดฐเด‚ เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเดพเตป เด•เดดเดฟเดฏเตเด‚.
  • NAT-เดจเต เดšเตเดฑเตเดฑเตเดฎเตเดณเตเดณ เดฑเดฟเดฒเต‡เด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเดณเตเดณ เดฏเดพเดคเตเดฐ (เดตเดณเดตเต) NAT เดŸเตเดฐเดพเดตเต‡เดดเตเดธเดฒเดฟเดจเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เดฐเดฃเตเดŸเต เดธเดฎเดชเตเดฐเดพเดฏเด•เตเด•เดพเตผเด•เตเด•เตเด‚ เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเดจเตเดจ เด’เดฐเต เดชเตเดฐเต‹เด•เตเดธเดฟ เดตเดดเดฟ เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เด‡เดคเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เดฒเต‡เดฑเตเดฑเตปเดธเดฟ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต, STUN-เดจเต‡เด•เตเด•เดพเตพ เด•เต‚เดŸเตเดคเตฝ เดšเต†เดฒเดตเต‡เดฑเดฟเดฏเดคเดพเดฃเต (เด•เดพเดฐเดฃเด‚ เด‡เดคเต เดฎเตเดดเตเดตเตป เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏ เดธเต†เดทเดจเดฟเดฒเตเด‚ เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต), เดŽเดจเตเดจเดพเตฝ เดšเดฟเดฒเดชเตเดชเต‹เตพ เด‡เดคเต เด’เดฐเต‡เดฏเตŠเดฐเต เด“เดชเตเดทเดจเดพเดฃเต.
  • เด‡เตปเตเดฑเดฑเดพเด•เตเดŸเต€เดตเต เด•เดฃเด•เตเดฑเตเดฑเดฟเดตเดฟเดฑเตเดฑเดฟ เดŽเดธเตเดฑเตเดฑเดพเดฌเตเดฒเดฟเดทเตโ€Œเดฎเต†เตปเตเดฑเต (เดเดธเต) เดธเดฎเดชเตเดฐเดพเดฏเด•เตเด•เดพเดฐเต† เดจเต‡เดฐเดฟเดŸเตเดŸเต เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเดญเดฟเดšเตเดš เดตเดฟเดตเดฐเด™เตเด™เดณเตเดŸเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเตฝ เดฐเดฃเตเดŸเต เดธเดฎเดชเตเดฐเดพเดฏเด•เตเด•เดพเดฐเต† เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดฎเดพเดฏ เดเดฑเตเดฑเดตเตเด‚ เดฎเดฟเด•เดšเตเดš เดฐเต€เดคเดฟ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเตเดชเต‹เดฒเต† เดคเดจเตเดจเต† เดเดคเต STUN, TURN เดธเต†เตผเดตเดฑเตเด•เตพเด•เตเด•เตเด‚ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจ เดตเดฟเดตเดฐเด™เตเด™เดณเตเด‚.
  • เดธเต†เดทเตป เดตเดฟเดตเดฐเดฃ เดชเตเดฐเต‹เดŸเตเดŸเต‹เด•เตเด•เต‹เตพ (SDP) เด•เดฃเด•เตเดทเตป เดšเดพเดจเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดซเต‹เตผเดฎเดพเดฑเตเดฑเดพเดฃเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, ICE เด•เดพเตปเดกเดฟเดกเต‡เดฑเตเดฑเตเด•เตพ, เดฎเตพเดŸเตเดŸเดฟเดฎเต€เดกเดฟเดฏ เด•เต‹เดกเต†เด•เตเด•เตเด•เตพ (เด“เดกเดฟเดฏเต‹/เดตเต€เดกเดฟเดฏเต‹ เดšเดพเดจเดฒเดฟเตปเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ) เดฎเตเดคเดฒเดพเดฏเดต... เดธเดฎเดชเตเดฐเดพเดฏเด•เตเด•เดพเดฐเดฟเตฝ เด’เดฐเดพเตพ เด’เดฐเต SDP เด“เดซเตผ เด…เดฏเดฏเตเด•เตเด•เตเดจเตเดจเต, เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต เด’เดฐเต SDP เด‰เดคเตเดคเดฐเดคเตเดคเต‹เดŸเต† เดชเตเดฐเดคเดฟเด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต . เด‡เดคเดฟเดจเตเดถเต‡เดทเด‚, เด’เดฐเต เดšเดพเดจเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต.

เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เด•เดฃเด•เตเดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดธเดฎเดชเตเดฐเดพเดฏเด•เตเด•เดพเตผ STUN, TURN เดธเต†เตผเดตเดฑเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดฒเดญเดฟเด•เตเด•เตเดจเตเดจ เดตเดฟเดตเดฐเด™เตเด™เตพ เดถเต‡เด–เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเต เดชเดฐเดธเตเดชเดฐเด‚ เด•เตˆเดฎเดพเดฑเตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚.

เด…เดตเตผเด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเด‚ เดจเดŸเดคเตเดคเดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต เด‡เดคเตเดตเดฐเต† เดฒเดญเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒ เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดถเตเดจเด‚, เด…เดคเดฟเดจเดพเตฝ เดˆ เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดฌเดพเตปเดกเต-เด“เดซเต-เดฌเดพเตปเดกเต เดธเด‚เดตเดฟเดงเดพเดจเด‚ เดจเดฟเดฒเดจเดฟเตฝเด•เตเด•เดฃเด‚: เด’เดฐเต เดธเดฟเด—เตเดจเดฒเดฟเด‚เด—เต เดธเต†เตผเดตเตผ.

เด’เดฐเต เดธเดฟเด—เตเดจเดฒเดฟเด‚เด—เต เดธเต†เตผเดตเตผ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต, เด•เดพเดฐเดฃเด‚ เด…เดคเดฟเตปเตเดฑเต† เด’เดฐเต‡เดฏเตŠเดฐเต เดœเต‹เดฒเดฟ เดนเดพเตปเดกเตโ€Œเดทเต‡เด•เตเด•เต เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ เดธเดฎเดชเตเดฐเดพเดฏเด•เตเด•เดพเตผเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเตเด• เดŽเดจเตเดจเดคเดพเดฃเต (เดšเตเดตเดŸเต†เดฏเตเดณเตเดณ เดกเดฏเด—เตเดฐเดพเดฎเดฟเตฝ เด•เดพเดฃเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเต‹เดฒเต†).

Cheerp, WebRTC, Firebase เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต C++ เตฝ เดจเดฟเดจเตเดจเต เดตเต†เดฌเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดฎเตพเดŸเตเดŸเดฟเดชเตเดฒเต†เดฏเตผ เด—เต†เดฏเดฟเด‚ เดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต
เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เดฟเดฏ WebRTC เดนเดพเตปเดกเตโ€Œเดทเต‡เด•เตเด•เต เดธเต€เด•เตเดตเตปเดธเต เดกเดฏเด—เตเดฐเด‚

Teeworlds เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดฎเต‹เดกเตฝ เด…เดตเดฒเต‹เด•เดจเด‚

Teeworlds เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเตผ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต:

  • เด•เตเดฒเดฏเตปเตเดฑเต, เดธเต†เตผเดตเตผ เด˜เดŸเด•เด™เตเด™เตพ เดฐเดฃเตเดŸเต เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เดณเดพเดฃเต.
  • เดจเดฟเดฐเดตเดงเดฟ เดธเต†เตผเดตเดฑเตเด•เดณเดฟเตฝ เด’เดจเตเดจเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตโ€Œเดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดคเต เด•เตเดฒเดฏเตปเตเดฑเตเด•เตพ เด—เต†เดฏเดฟเดฎเดฟเตฝ เดชเตเดฐเดตเต‡เดถเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดตเดฏเดฟเตฝ เด“เดฐเต‹เดจเตเดจเตเด‚ เด’เดฐเต เดธเดฎเดฏเด‚ เด’เดฐเต เด—เต†เดฏเดฟเด‚ เดฎเดพเดคเตเดฐเด‚ เดนเต‹เดธเตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต.
  • เด—เต†เดฏเดฟเดฎเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดกเดพเดฑเตเดฑเดพ เด•เตˆเดฎเดพเดฑเตเดฑเดตเตเด‚ เดธเต†เตผเดตเตผ เดตเดดเดฟเดฏเดพเดฃเต เดจเดŸเดคเตเดคเตเดจเตเดจเดคเต.
  • เด—เต†เดฏเดฟเด‚ เด•เตเดฒเดฏเตปเตเดฑเดฟเตฝ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดŽเดฒเตเดฒเดพ เดชเตŠเดคเต เดธเต†เตผเดตเดฑเตเด•เดณเตเดŸเต†เดฏเตเด‚ เด’เดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดถเต‡เด–เดฐเดฟเด•เตเด•เดพเตป เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดฎเดพเดธเตเดฑเตเดฑเตผ เดธเต†เตผเดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เดกเดพเดฑเตเดฑเดพ เด•เตˆเดฎเดพเดฑเตเดฑเดคเตเดคเดฟเดจเดพเดฏเดฟ WebRTC เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดคเดฟเดจเต เดจเดจเตเดฆเดฟ, เด•เตเดฒเดฏเตปเตเดฑเต เดธเตเดฅเดฟเดคเดฟเดšเต†เดฏเตเดฏเตเดจเตเดจ เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต‡เด•เตเด•เต เด—เต†เดฏเดฟเดฎเดฟเตปเตเดฑเต† เดธเต†เตผเดตเตผ เด˜เดŸเด•เด‚ เด•เตˆเดฎเดพเดฑเดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดฏเตเด‚. เด‡เดคเต เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดตเดฒเดฟเดฏ เด…เดตเดธเดฐเด‚ เดจเตฝเด•เตเดจเตเดจเต...

เดธเต†เตผเดตเดฑเตเด•เตพ เด’เดดเดฟเดตเดพเด•เตเด•เตเด•

เดธเต†เตผเดตเตผ เดฒเต‹เดœเดฟเด•เตเด•เดฟเตปเตเดฑเต† เด…เดญเดพเดตเดคเตเดคเดฟเดจเต เดจเดฒเตเดฒเตŠเดฐเต เดจเต‡เดŸเตเดŸเดฎเตเดฃเตเดŸเต: เด—เดฟเดคเตเดคเดฌเต เดชเต‡เดœเตเด•เดณเดฟเดฒเต‹ เด•เตเดฒเต—เดกเตเดซเตเดฒเต†เดฏเดฑเดฟเดจเต เดชเดฟเดจเตเดจเดฟเดฒเตเดณเตเดณ เดžเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เดนเดพเตผเดกเตโ€Œเดตเต†เดฏเดฑเดฟเดฒเต‹ เดžเด™เตเด™เตพเด•เตเด•เต เดฎเตเดดเตเดตเตป เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด‚ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เด‰เดณเตเดณเดŸเด•เตเด•เดฎเดพเดฏเดฟ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เด…เด™เตเด™เดจเต† เดตเต‡เด—เดคเตเดคเดฟเดฒเตเดณเตเดณ เดกเต—เตบเดฒเต‹เดกเตเด•เดณเตเด‚ เด‰เดฏเตผเดจเตเดจ เดธเดฎเดฏเดตเตเด‚ เดธเต—เดœเดจเตเดฏเดฎเดพเดฏเดฟ เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเดจเตเดจเต. เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดจเดฎเตเด•เตเด•เต เด…เดตเดฐเต† เดฎเดฑเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚, เดจเดฎเตเดฎเตพ เดญเดพเด—เตเดฏเดตเดพเดจเดพเดฃเต†เด™เตเด•เดฟเตฝ เด—เต†เดฏเดฟเด‚ เดœเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด…เดŸเดฟเดธเตเดฅเดพเดจ เดธเต—เด•เดฐเตเดฏเด™เตเด™เตพ เดจเดตเต€เด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ.

เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดธเดฟเดธเตเดฑเตเดฑเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เด‡เดชเตเดชเต‹เดดเตเด‚ เด’เดฐเต เดฌเดพเดนเตเดฏ เด†เตผเด•เตเด•เดฟเดŸเต†เด•เตเดšเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

  • เด’เดจเตเดจเต‹ เด…เดคเดฟเดฒเดงเดฟเด•เดฎเต‹ STUN เดธเต†เตผเดตเดฑเตเด•เตพ: เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เดจเดฟเดฐเดตเดงเดฟ เดธเต—เดœเดจเตเดฏ เด“เดชเตเดทเดจเตเด•เตพ เด‰เดฃเตเดŸเต.
  • เด•เตเดฑเดžเตเดžเดคเต เด’เดฐเต เดŸเต‡เตบ เดธเต†เตผเดตเดฑเต†เด™เตเด•เดฟเดฒเตเด‚: เด‡เดตเดฟเดŸเต† เดธเต—เดœเดจเตเดฏ เด“เดชเตโ€Œเดทเดจเตเด•เดณเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เตพเด•เตเด•เต เด’เดจเตเดจเตเด•เดฟเตฝ เดธเตเดตเดจเตเดคเดฎเดพเดฏเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดพเด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดธเต‡เดตเดจเดคเตเดคเดฟเดจเต เดชเดฃเด‚ เดจเตฝเด•เดพเด‚. เดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เดฎเดฟเด•เตเด• เดธเดฎเดฏเดคเตเดคเตเด‚ STUN เดธเต†เตผเดตเดฑเตเด•เตพ เดตเดดเดฟ เด•เดฃเด•เตเดทเตป เดธเตเดฅเดพเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ (เด•เต‚เดŸเดพเดคเต† เดฏเดฅเดพเตผเดคเตเดฅ p2p เดจเตฝเด•เตเดจเตเดจเต), เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดซเดพเตพเดฌเดพเด•เตเด•เต เด“เดชเตเดทเดจเดพเดฏเดฟ TURN เด†เดตเดถเตเดฏเดฎเดพเดฃเต.
  • เดธเดฟเด—เตเดจเดฒเดฟเด‚เด—เต เดธเต†เตผเดตเตผ: เดฎเดฑเตเดฑเต เดฐเดฃเตเดŸเต เดตเดถเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ, เดธเดฟเด—เตเดจเดฒเดฟเด‚เด—เต เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเดฟเดฒเตเดฒ. เดธเดฟเด—เตเดจเดฒเดฟเด‚เด—เต เดธเต†เตผเดตเตผ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดฏเดพเด•เตเดจเตเดจเดคเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด’เดฐเต เด•เดฃเด•เตเดทเตป เดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต, เด’เดฐเต เดšเต†เดฑเดฟเดฏ เด…เดณเดตเดฟเดฒเตเดณเตเดณ เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเตเดฑเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.
  • Teeworlds Master Server: เดฎเดฑเตเดฑเต เดธเต†เตผเดตเดฑเตเด•เตพ เด…เดตเดฐเตเดŸเต† เด…เดธเตเดคเดฟเดคเตเดตเด‚ เดชเดฐเดธเตเดฏเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ เด•เตเดฒเดฏเตปเตเดฑเตเด•เตพ เดชเตŠเดคเต เดธเต†เตผเดตเดฑเตเด•เตพ เด•เดฃเตเดŸเต†เดคเตเดคเตเดจเตเดจเดคเดฟเดจเตเด‚ เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเดฒเตเด‚ (เด•เตเดฒเดฏเตปเตเดฑเตเด•เตพเด•เตเด•เต เด…เดตเตผเด•เตเด•เดฑเดฟเดฏเดพเดตเตเดจเตเดจ เด’เดฐเต เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เดธเตเดตเดฎเต‡เดงเดฏเดพ เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเดจเดพเด•เตเด‚), เด•เดณเดฟเด•เตเด•เดพเตผเด•เตเด•เต เด•เตเดฐเดฎเดฐเดนเดฟเดคเดฎเดพเดฏ เด†เดณเตเด•เดณเตเดฎเดพเดฏเดฟ เด—เต†เดฏเดฟเดฎเตเด•เดณเดฟเตฝ เดชเด™เตเด•เต†เดŸเตเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดคเต เดจเดฒเตเดฒเดคเดพเดฃเต.

Google-เตปเตเดฑเต† เดธเต—เดœเดจเตเดฏ STUN เดธเต†เตผเดตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด’เดฐเต เดŸเต‡เตบ เดธเต†เตผเดตเตผ เดธเตเดตเดฏเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต.

เด…เดตเดธเดพเดจ เดฐเดฃเตเดŸเต เดชเต‹เดฏเดฟเตปเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดžเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดซเดฏเตผเดฌเต‡เดธเต:

  • Teeworlds เดฎเดพเดธเตเดฑเตเดฑเตผ เดธเต†เตผเดตเตผ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต: เด“เดฐเต‹ เดธเดœเต€เดต เดธเต†เตผเดตเดฑเดฟเตปเตเดฑเต†เดฏเตเด‚ เดตเดฟเดตเดฐเด™เตเด™เตพ (เดชเต‡เดฐเต, IP, เดฎเดพเดชเตเดชเต, เดฎเต‹เดกเต, ...) เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเดพเดฏเดฟ. เดธเต†เตผเดตเดฑเตเด•เตพ เด…เดตเดฐเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเต เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เด•เตเดฒเดฏเตปเตเดฑเตเด•เตพ เดฎเตเดดเตเดตเตป เดฒเดฟเดธเตเดฑเตเดฑเตเด‚ เดŽเดŸเตเดคเตเดคเต เดชเตเดฒเต†เดฏเดฑเดฟเดจเต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚. เดนเต‹เด‚ เดชเต‡เดœเดฟเตฝ เดžเด™เตเด™เตพ เดฒเดฟเดธเตเดฑเตเดฑเต HTML เด†เดฏเดฟ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เด•เดณเดฟเด•เตเด•เดพเตผเด•เตเด•เต เดธเต†เตผเดตเดฑเดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตโ€Œเดคเต เดจเต‡เดฐเดฟเดŸเตเดŸเต เด—เต†เดฏเดฟเดฎเดฟเดฒเต‡เด•เตเด•เต เด•เตŠเดฃเตเดŸเตเดชเต‹เด•เดพเดจเดพเด•เตเด‚.
  • เด…เดŸเตเดคเตเดค เดตเดฟเดญเดพเด—เดคเตเดคเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดžเด™เตเด™เดณเตเดŸเต† เดธเต‹เด•เตเด•เดฑเตเดฑเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดฒเตเดฎเดพเดฏเดฟ เดธเดฟเด—เตเดจเดฒเดฟเด‚เด—เต เด…เดŸเตเดคเตเดค เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

Cheerp, WebRTC, Firebase เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต C++ เตฝ เดจเดฟเดจเตเดจเต เดตเต†เดฌเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดฎเตพเดŸเตเดŸเดฟเดชเตเดฒเต†เดฏเตผ เด—เต†เดฏเดฟเด‚ เดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต
เด—เต†เดฏเดฟเดฎเดฟเดจเตเดณเตเดณเดฟเดฒเตเด‚ เดนเต‹เด‚ เดชเต‡เดœเดฟเดฒเตเดฎเตเดณเตเดณ เดธเต†เตผเดตเดฑเตเด•เดณเตเดŸเต† เดฒเดฟเดธเตเดฑเตเดฑเต

เดธเต‹เด•เตเด•เดฑเตเดฑเตเด•เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตฝ

เด†เดตเดถเตเดฏเดฎเดพเดฏ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต Posix UDP เดธเต‹เด•เตเด•เดฑเตเดฑเตเด•เตพเด•เตเด•เต เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เด…เดŸเตเดคเตเดคเต เด’เดฐเต API เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต.

เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดฒเต‚เดŸเต†เดฏเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดฒเดณเดฟเดคเดฎเดพเดฏ เดกเดพเดฑเตเดฑเดพ เด•เตˆเดฎเดพเดฑเตเดฑเดคเตเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดฎเดฟเดจเดฟเดฎเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเดจเตเด‚ เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต.

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดžเด™เตเด™เตพเด•เตเด•เต เดฏเดฅเดพเตผเดคเตเดฅ เดฑเต‚เดŸเตเดŸเดฟเด‚เด—เต เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ: เดŽเดฒเตเดฒเดพ เดธเดนเดชเดพเด เดฟเด•เดณเตเด‚ เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดซเดฏเตผเดฌเต‡เดธเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเด‚เดญเดตเดตเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เด’เดฐเต‡ "เดตเต†เตผเดšเตเดตเตฝ เดฒเดพเตป" เด†เดฃเต.

เด…เดคเดฟเดจเดพเตฝ, เดžเด™เตเด™เตพเด•เตเด•เต เด…เดฆเตเดตเดฟเดคเต€เดฏ IP เดตเดฟเดฒเดพเดธเด™เตเด™เตพ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ: เดธเดฎเดชเตเดฐเดพเดฏเด•เตเด•เดพเดฐเต† เด…เดฆเตเดตเดฟเดคเต€เดฏเดฎเดพเดฏเดฟ เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเดพเตป เดคเดจเดคเดพเดฏ เดซเดฏเตผเดฌเต‡เดธเต เด•เต€ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ (เดกเตŠเดฎเต†เดฏเตเตป เดจเดพเดฎเด™เตเด™เตพเด•เตเด•เต เดธเดฎเดพเดจเดฎเดพเดฏเดคเต) เดฎเดคเดฟเดฏเดพเด•เตเด‚, เด•เต‚เดŸเดพเดคเต† เด“เดฐเต‹ เดชเดฟเดฏเดฑเตเด‚ เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เด“เดฐเต‹ เด•เต€เดฏเตเด•เตเด•เตเด‚ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ "เดตเตเดฏเดพเดœ" IP เดตเดฟเดฒเดพเดธเด™เตเด™เตพ เดจเตฝเด•เตเดจเตเดจเต. เด‡เดคเต เด†เด—เต‹เดณ เดเดชเดฟ เด…เดกเตเดฐเดธเต เด…เดธเตˆเตปเดฎเต†เตปเตเดฑเดฟเตปเตเดฑเต† เด†เดตเดถเตเดฏเด•เดคเดฏเต† เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เด’เดดเดฟเดตเดพเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เดจเดฟเดธเตเดธเดพเดฐเดฎเดฒเตเดฒเดพเดคเตเดค เด’เดฐเต เดœเต‹เดฒเดฟเดฏเดพเดฃเต.

เดžเด™เตเด™เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เต‡เดฃเตเดŸ เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดž API เด‡เดคเดพ:

// Create and destroy a socket
int socket();
int close(int fd);
// Bind a socket to a port, and publish it on Firebase
int bind(int fd, AddrInfo* addr);
// Send a packet. This lazily create a WebRTC connection to the 
// peer when necessary
int sendto(int fd, uint8_t* buf, int len, const AddrInfo* addr);
// Receive the packets destined to this socket
int recvfrom(int fd, uint8_t* buf, int len, AddrInfo* addr);
// Be notified when new packets arrived
int recvCallback(Callback cb);
// Obtain a local ip address for this peer key
uint32_t resolve(client::String* key);
// Get the peer key for this ip
String* reverseResolve(uint32_t addr);
// Get the local peer key
String* local_key();
// Initialize the library with the given Firebase database and 
// WebRTc connection options
void init(client::FirebaseConfig* fb, client::RTCConfiguration* ice);

API เดฒเดณเดฟเดคเดตเตเด‚ Posix Sockets API เดจเต เดธเดฎเดพเดจเดตเตเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เดšเดฟเดฒ เดชเตเดฐเดงเดพเดจ เดตเตเดฏเดคเตเดฏเดพเดธเด™เตเด™เดณเตเดฃเตเดŸเต: เดฒเต‹เด—เดฟเด‚เด—เต เด•เต‹เตพเดฌเดพเด•เตเด•เตเด•เตพ, เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดเดชเดฟเด•เตพ เดจเตฝเด•เตฝ, เด…เดฒเดธเดฎเดพเดฏ เด•เดฃเด•เตเดทเดจเตเด•เตพ.

เด•เต‹เตพเดฌเดพเด•เตเด•เตเด•เตพ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

เด’เดฑเดฟเดœเดฟเดจเตฝ เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดจเต‹เตบ-เดฌเตเดฒเต‹เด•เตเด•เดฟเด‚เด—เต I/O เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝเดชเตเดชเต‹เดฒเตเด‚, เด’เดฐเต เดตเต†เดฌเต เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เดฑเตบ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เด•เต‹เดกเต เดฑเต€เดซเดพเด•เตเดฑเตเดฑเตผ เดšเต†เดฏเตเดฏเดฃเด‚.

เด‡เดคเดฟเดจเตเดณเตเดณ เด•เดพเดฐเดฃเด‚, เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต† เด‡เดตเตปเตเดฑเต เดฒเต‚เดชเตเดชเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเตฝ เดจเดฟเดจเตเดจเต เดฎเดฑเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต (เด…เดคเต JavaScript เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ WebAssembly เด†เด•เดŸเตเดŸเต†).

เดจเดพเดŸเตเดŸเดฟเดฒเต† เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ เดจเดฎเตเด•เตเด•เต เด‡เดคเตเดชเต‹เดฒเต† เด•เต‹เดกเต เดŽเดดเตเดคเดพเด‚

while(running) {
  select(...); // wait for I/O events
  while(true) {
    int r = readfrom(...); // try to read
    if (r < 0 && errno == EWOULDBLOCK) // no more data available
      break;
    ...
  }
  ...
}

เด‡เดตเตปเตเดฑเต เดฒเต‚เดชเตเดชเต เดžเด™เตเด™เตพเด•เตเด•เต เดฎเดฑเดžเตเดžเดฟเดฐเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดžเด™เตเด™เตพ เด…เดคเดฟเดจเต† เด‡เดคเตเดชเต‹เดฒเตเดณเตเดณ เด’เดจเตเดจเดพเด•เตเด•เดฟ เดฎเดพเดฑเตเดฑเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

auto cb = []() { // this will be called when new data is available
  while(true) {
    int r = readfrom(...); // try to read
    if (r < 0 && errno == EWOULDBLOCK) // no more data available
      break;
    ...
  }
  ...
};
recvCallback(cb); // register the callback

เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดเดชเดฟ เด…เดธเตˆเตปเดฎเต†เตปเตเดฑเต

เดžเด™เตเด™เดณเตเดŸเต† "เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดฒเต†" เดจเต‹เดกเต เดเดกเดฟเด•เตพ IP เดตเดฟเดฒเดพเดธเด™เตเด™เดณเดฒเตเดฒ, เดซเดฏเตผเดฌเต‡เดธเต เด•เต€เด•เดณเดพเดฃเต (เด…เดต เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจ เดธเตเดŸเตเดฐเดฟเด‚เด—เตเด•เดณเดพเดฃเต: -LmEC50PYZLCiCP-vqde ).

เด‡เดคเต เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต, เด•เดพเดฐเดฃเด‚ IP-เด•เตพ เด…เดธเตˆเตป เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เด…เดตเดฏเตเดŸเต† เด…เดฆเตเดตเดฟเดคเต€เดฏเดค เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดธเด‚เดตเดฟเดงเดพเดจเด‚ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ (เด…เดคเตเดชเต‹เดฒเต† เด•เตเดฒเดฏเตปเตเดฑเต เดตเดฟเดšเตเด›เต‡เดฆเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ เด…เดต เดจเต€เด•เตเด•เด‚ เดšเต†เดฏเตเดฏเตเด•), เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดธเด‚เด–เตเดฏเดพ เดฎเต‚เดฒเตเดฏเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเดนเดชเดพเด เดฟเด•เดณเต† เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดฏเต‡เดฃเตเดŸเดคเต เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เด‡เดคเดพเดฃเต. resolve ะธ reverseResolve: เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต เด•เต€เดฏเตเดŸเต† เดธเตเดŸเตเดฐเดฟเด‚เด—เต เดฎเต‚เดฒเตเดฏเด‚ (เด‰เดชเดฏเต‹เด•เตเดคเตƒ เด‡เตปเดชเตเดŸเตเดŸเต เดตเดดเดฟเดฏเต‹ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฎเดพเดธเตเดฑเตเดฑเตผ เดธเต†เตผเดตเตผ เดตเดดเดฟเดฏเต‹) เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เด…เดคเต เด†เดจเตเดคเดฐเดฟเด• เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเดจเดพเดฏเดฟ เด’เดฐเต IP เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดชเดฐเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚. เดฒเดพเดณเดฟเดคเตเดฏเดคเตเดคเดฟเดจเดพเดฏเตเดณเตเดณ เด’เดฐเต เดธเตเดŸเตเดฐเดฟเด‚เด—เดฟเดจเต เดชเด•เดฐเด‚ API-เดฏเตเดŸเต† เดฌเดพเด•เตเด•เดฟ เดญเดพเด—เดตเตเด‚ เดˆ เดฎเต‚เดฒเตเดฏเด‚ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด‡เดคเต เดกเดฟเดŽเตปเดŽเดธเต เดฒเตเด•เตเด•เดชเตเดชเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เด•เตเดฒเดฏเตปเตเดฑเดฟเตฝ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดคเดพเดฏเดคเต, IP เดตเดฟเดฒเดพเดธเด™เตเด™เตพ เดตเตเดฏเดคเตเดฏเดธเตเดค เด•เตเดฒเดฏเตปเตเดฑเตเด•เตพเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดชเด™เตเด•เดฟเดŸเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เด†เด—เต‹เดณ เดเดกเตปเตเดฑเดฟเดซเดฏเตผ เด†เดตเดถเตเดฏเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด…เดคเต เดฎเดฑเตเดฑเตŠเดฐเต เดฐเต€เดคเดฟเดฏเดฟเตฝ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เด…เดฒเดธเดฎเดพเดฏ เด•เดฃเด•เตเดทเตป

UDP-เดฏเตโ€Œเด•เตเด•เต เด’เดฐเต เด•เดฃเด•เตเดทเตป เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดจเดฎเตเดฎเตพ เด•เดฃเตเดŸเดคเตเดชเต‹เดฒเต†, WebRTC-เดจเต เดฐเดฃเตเดŸเต เดธเดฎเดชเตเดฐเดพเดฏเด•เตเด•เดพเตผเด•เตเด•เดฟเดŸเดฏเดฟเตฝ เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เด’เดฐเต เดจเต€เดฃเตเดŸ เด•เดฃเด•เตเดทเตป เดชเตเดฐเต‹เดธเดธเตเดธเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เด…เดคเต‡ เดคเดฒเดคเตเดคเดฟเดฒเตเดณเตเดณ เด…เดฎเต‚เตผเดคเตเดคเต€เด•เดฐเดฃเด‚ เดจเตฝเด•เดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, (sendto/recvfrom เดฎเตเตปเด•เต‚เตผ เด•เดฃเด•เตเดทเดจเดฟเดฒเตเดฒเดพเดคเต† เด…เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดธเดฎเดชเตเดฐเดพเดฏเด•เตเด•เดพเตผเด•เตเด•เตŠเดชเตเดชเด‚), เดคเตเดŸเตผเดจเตเดจเต เด…เดตเตผ API-เด•เตเด•เตเดณเตเดณเดฟเตฝ เด’เดฐเต "เด…เดฒเดธเดฎเดพเดฏ" (เดตเตˆเด•เดฟเดฏเตเดณเตเดณ) เด•เดฃเด•เตเดทเตป เดจเดŸเดคเตเดคเดฃเด‚.

UDP เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ "เดธเต†เตผเดตเดฑเตเด‚" "เด•เตเดฒเดฏเตปเตเดฑเตเด‚" เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดธเดพเดงเดพเดฐเดฃ เด†เดถเดฏเดตเดฟเดจเดฟเดฎเดฏเดคเตเดคเดฟเตฝ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเตเด‚ เดžเด™เตเด™เดณเตเดŸเต† เดฒเตˆเดฌเตเดฐเดฑเดฟ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเด‚ เด‡เดคเดพเดฃเต:

  • เดธเต†เตผเดตเตผ เด•เต‹เดณเตเด•เตพ bind()เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดชเต‹เตผเดŸเตเดŸเดฟเตฝ เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เตพ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเต‹เดŸเต เดชเดฑเดฏเดพเตป.

เดชเด•เดฐเด‚, เดžเด™เตเด™เตพ เดธเต†เตผเดตเตผ เด•เต€เดฏเตเดŸเต† เด•เต€เดดเดฟเตฝ Firebase-เดฒเต‡เด•เตเด•เต เด’เดฐเต เดคเตเดฑเดจเตเดจ เดชเต‹เตผเดŸเตเดŸเต เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเดฟเตปเตเดฑเต† เดธเดฌเตเดŸเตเดฐเต€เดฏเดฟเตฝ เด‡เดตเตปเตเดฑเตเด•เตพ เด•เต‡เตพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

  • เดธเต†เตผเดตเตผ เด•เต‹เดณเตเด•เตพ recvfrom(), เดˆ เดชเต‹เตผเดŸเตเดŸเดฟเดฒเต† เดเดคเต เดนเต‹เดธเตเดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเด‚ เดตเดฐเตเดจเตเดจ เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เตพ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดˆ เดชเต‹เตผเดŸเตเดŸเดฟเดฒเต‡เด•เตเด•เต เด…เดฏเดšเตเดš เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต† เด‡เตปเด•เดฎเดฟเด‚เด—เต เด•เตเดฏเต‚ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เด“เดฐเต‹ เดชเต‹เตผเดŸเตเดŸเดฟเดจเตเด‚ เด…เดคเดฟเตปเตเดฑเต‡เดคเดพเดฏ เด•เตเดฏเต‚ เด‰เดฃเตเดŸเต, WebRTC เดกเดพเดฑเตเดฑเดพเด—เตเดฐเดพเดฎเตเด•เดณเตเดŸเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ เด‰เดฑเดตเดฟเดŸเดตเตเด‚ เดฒเด•เตเดทเตเดฏเดธเตเดฅเดพเดจ เดชเต‹เตผเดŸเตเดŸเตเด•เดณเตเด‚ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดฒเต‚เดŸเต† เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเดพเด•เตเด•เดฑเตเดฑเต เดตเดฐเตเดฎเตเดชเต‹เตพ เดเดคเต เด•เตเดฏเต‚ เดซเต‹เตผเดตเต‡เดกเต เดšเต†เดฏเตเดฏเดฃเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพเด•เตเด•เดฑเดฟเดฏเดพเด‚.

เด•เต‹เตพ เดจเต‹เตบ-เดฌเตเดฒเต‹เด•เตเด•เดฟเด‚เด—เต เด†เดฃเต, เด…เดคเดฟเดจเดพเตฝ เดชเดพเด•เตเด•เดฑเตเดฑเตเด•เตพ เด‡เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดžเด™เตเด™เตพ -1 เดคเดฟเดฐเดฟเด•เต† เดจเตฝเด•เดฟ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด• errno=EWOULDBLOCK.

  • เด•เตเดฒเดฏเตปเตเดฑเต เดšเดฟเดฒ เดฌเดพเดนเตเดฏ เดฎเดพเตผเด—เด™เตเด™เดณเดฟเดฒเต‚เดŸเต† เดธเต†เตผเดตเดฑเดฟเตปเตเดฑเต† เดเดชเดฟเดฏเตเด‚ เดชเต‹เตผเดŸเตเดŸเตเด‚ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‹เดณเตเด•เตพ sendto(). เด‡เดคเต เด’เดฐเต เด†เดจเตเดคเดฐเดฟเด• เด•เต‹เดณเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. bind(), เด…เดคเดฟเดจเดพเตฝ เดคเตเดŸเตผเดจเตเดจเตเดณเตเดณ recvfrom() เดฌเตˆเตปเดกเต เดตเตเดฏเด•เตเดคเดฎเดพเดฏเดฟ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเดคเต† เดคเดจเตเดจเต† เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เดฒเดญเดฟเด•เตเด•เตเด‚.

เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เด•เตเดฒเดฏเตปเตเดฑเต เดฌเดพเดนเตเดฏเดฎเดพเดฏเดฟ เดธเตเดŸเตเดฐเดฟเด‚เด—เต เด•เต€ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดซเด‚เด—เตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต resolve() เด’เดฐเต IP เดตเดฟเดฒเดพเดธเด‚ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต.

เดˆ เดธเดฎเดฏเดคเตเดคเต, เดฐเดฃเตเดŸเต เดธเดฎเดชเตเดฐเดพเดฏเด•เตเด•เดพเดฐเตเด‚ เด‡เดคเตเดตเดฐเต† เดชเดฐเดธเตเดชเดฐเด‚ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดžเด™เตเด™เตพ เด’เดฐเต WebRTC เดนเดพเตปเดกเตโ€Œเดทเต‡เด•เตเด•เต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต. เด’เดฐเต‡ เดชเดฟเดฏเดฑเดฟเตปเตเดฑเต† เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเต‹เตผเดŸเตเดŸเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด•เดฃเด•เตเดทเดจเตเด•เตพ เด’เดฐเต‡ WebRTC DataChannel เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เดžเด™เตเด™เตพ เดชเดฐเต‹เด•เตเดทเดฎเดพเดฏเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต bind()เด…เดคเดฟเดจเดพเตฝ เด…เดŸเตเดคเตเดคเดคเดฟเตฝ เดธเต†เตผเดตเดฑเดฟเดจเต เดตเต€เดฃเตเดŸเตเด‚ เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเดจเดพเด•เตเด‚ sendto() เดšเดฟเดฒ เด•เดพเดฐเดฃเด™เตเด™เดณเดพเตฝ เด…เดคเต เด…เดŸเดšเตเดšเดพเตฝ.

เดซเดฏเตผเดฌเต‡เดธเดฟเดฒเต† เดธเต†เตผเดตเตผ เดชเต‹เตผเดŸเตเดŸเต เดตเดฟเดตเดฐเด™เตเด™เตพเด•เตเด•เต เด•เต€เดดเดฟเตฝ เด•เตเดฒเดฏเตปเตเดฑเต เด…เดคเดฟเตปเตเดฑเต† SDP เด“เดซเตผ เดŽเดดเตเดคเตเดฎเตเดชเต‹เตพ เด•เตเดฒเดฏเตปเตเดฑเต เด•เดฃเด•เตเดทเดจเต† เด•เตเดฑเดฟเดšเตเดšเต เดธเต†เตผเดตเดฑเดฟเดจเต† เด…เดฑเดฟเดฏเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดธเต†เตผเดตเตผ เด…เดตเดฟเดŸเต† เด…เดคเดฟเตปเตเดฑเต† เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เดจเตฝเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดคเดพเดดเต†เดฏเตเดณเตเดณ เดกเดฏเด—เตเดฐเด‚ เด’เดฐเต เดธเต‹เด•เตเด•เดฑเตเดฑเต เดธเตเด•เต€เดฎเดฟเดจเดพเดฏเตเดณเตเดณ เดธเดจเตเดฆเต‡เดถ เดชเตเดฐเดตเดพเดนเดคเตเดคเดฟเตปเดฑเต†เดฏเตเด‚ เด•เตเดฒเดฏเตปเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเต†เตผเดตเดฑเดฟเดฒเต‡เด•เตเด•เต เด†เดฆเตเดฏ เดธเดจเตเดฆเต‡เดถเด‚ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเดคเดฟเตปเตเดฑเต†เดฏเตเด‚ เด‰เดฆเดพเดนเดฐเดฃเด‚ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต:

Cheerp, WebRTC, Firebase เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต C++ เตฝ เดจเดฟเดจเตเดจเต เดตเต†เดฌเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดฎเตพเดŸเตเดŸเดฟเดชเตเดฒเต†เดฏเตผ เด—เต†เดฏเดฟเด‚ เดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต
เด•เตเดฒเดฏเตปเตเดฑเตเด‚ เดธเต†เตผเดตเดฑเตเด‚ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เด•เดฃเด•เตเดทเตป เด˜เดŸเตเดŸเดคเตเดคเดฟเตปเตเดฑเต† เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดกเดฏเด—เตเดฐเด‚

เดคเต€เดฐเตเดฎเดพเดจเด‚

เดจเดฟเด™เตเด™เตพ เด‡เดคเต เดตเดฐเต† เดตเดพเดฏเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดธเดฟเดฆเตเดงเดพเดจเตเดคเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเดฏเดฟ เด•เดพเดฃเดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเดพเด•เดพเด‚. เด—เต†เดฏเดฟเด‚ เด•เดณเดฟเด•เตเด•เดพเด‚ teeworlds.leaningtech.com, เดถเตเดฐเดฎเดฟเด•เตเด•เต‚!


เดธเดนเดชเตเดฐเดตเตผเดคเตเดคเด•เตผ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดธเต—เดนเตƒเดฆ เดฎเดคเตเดธเดฐเด‚

เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เต เดฒเตˆเดฌเตเดฐเดฑเดฟ เด•เต‹เดกเต เด‡เดตเดฟเดŸเต† เดธเต—เดœเดจเตเดฏเดฎเดพเดฏเดฟ เดฒเดญเตเดฏเดฎเดพเดฃเต เดธเดพเดฎเต‚เดนเดฟเด•เด‚. เดžเด™เตเด™เดณเตเดŸเต† เดšเดพเดจเดฒเดฟเดฒเต† เดธเด‚เดญเดพเดทเดฃเดคเตเดคเดฟเตฝ เดšเต‡เดฐเตเด• เด—เดฟเดฑเตเดฑเดพเตผ!

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•