Cheerp, WebRTC เช…เชจเซ‡ Firebase เชธเชพเชฅเซ‡ C++ เชฅเซ€ เชตเซ‡เชฌ เชชเชฐ เชฎเชฒเซเชŸเชฟเชชเซเชฒเซ‡เชฏเชฐ เช—เซ‡เชฎ เชชเซ‹เชฐเซเชŸเชฟเช‚เช—

เชชเชฐเชฟเชšเชฏ

เช…เชฎเชพเชฐเซ€ เช•เช‚เชชเชจเซ€ เชฒเซ€เชจเชฟเช‚เช— เชŸเซ‡เช•เซเชจเซ‹เชฒเซ‹เชœเซ€เชธ เชชเชฐเช‚เชชเชฐเชพเช—เชค เชกเซ‡เชธเซเช•เชŸเซ‹เชช เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธเชจเซ‡ เชตเซ‡เชฌ เชชเชฐ เชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เช•เซ‡เชฒเซ‹ เชชเซ‚เชฐเชพ เชชเชพเชกเซ‡ เช›เซ‡. เช…เชฎเชพเชฐเซเช‚ C++ เช•เชฎเซเชชเชพเช‡เชฒเชฐ เช–เซเชถเช–เซเชถเชพเชฒ WebAssembly เช…เชจเซ‡ JavaScriptเชจเซเช‚ เชธเช‚เชฏเซ‹เชœเชจ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡ เชฌเช‚เชจเซ‡ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡ เชธเชฐเชณ เชฌเซเชฐเชพเช‰เชเชฐ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพ, เช…เชจเซ‡ เช‰เชšเซเชš เชชเซเชฐเชฆเชฐเซเชถเชจ.

เชคเซ‡เชจเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช…เชฎเซ‡ เชฎเชฒเซเชŸเชฟเชชเซเชฒเซ‡เชฏเชฐ เช—เซ‡เชฎเชจเซ‡ เชตเซ‡เชฌ เชชเชฐ เชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซเช‚ Teeworlds. Teeworlds เช เชเช• เชฎเชฒเซเชŸเชฟเชชเซเชฒเซ‡เชฏเชฐ XNUMXD เชฐเซ‡เชŸเซเชฐเซ‹ เช—เซ‡เชฎ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เช–เซ‡เชฒเชพเชกเซ€เช“เชจเชพ เชจเชพเชจเชพ เชชเชฐเช‚เชคเซ เชธเช•เซเชฐเชฟเชฏ เชธเชฎเซเชฆเชพเชฏ (เชฎเชพเชฐเชพ เชธเชนเชฟเชค!) เช›เซ‡. เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเซ‡เชฒ เชธเช‚เชธเชพเชงเชจเซ‹ เช…เชจเซ‡ CPU เช…เชจเซ‡ GPU เช†เชตเชถเซเชฏเช•เชคเชพเช“ - เชเช• เช†เชฆเชฐเซเชถ เช‰เชฎเซ‡เชฆเชตเชพเชฐเชจเซ€ เชฆเซเชฐเชทเซเชŸเชฟเช เชคเซ‡ เชจเชพเชจเซเช‚ เช›เซ‡.

Cheerp, WebRTC เช…เชจเซ‡ Firebase เชธเชพเชฅเซ‡ C++ เชฅเซ€ เชตเซ‡เชฌ เชชเชฐ เชฎเชฒเซเชŸเชฟเชชเซเชฒเซ‡เชฏเชฐ เช—เซ‡เชฎ เชชเซ‹เชฐเซเชŸเชฟเช‚เช—
Teeworlds เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เช…เชฎเซ‡ เชชเซเชฐเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช† เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เชจเซ‡เชŸเชตเชฐเซเช• เช•เซ‹เชกเชจเซ‡ เชตเซ‡เชฌ เชชเชฐ เชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชธเชพเชฎเชพเชจเซเชฏ เช‰เช•เซ‡เชฒเซ‹. เช† เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชจเซ€เชšเซ‡เชจเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

  • XMLHttpRequest/fetch, เชœเซ‹ เชจเซ‡เชŸเชตเชฐเซเช• เชญเชพเช—เชฎเชพเช‚ เชซเช•เซเชค HTTP เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡, เช…เชฅเชตเชพ
  • เชตเซ‡เชฌเชธเซ‹เช•เซ‡เชŸเซเชธ.

เชฌเช‚เชจเซ‡ เชธเซ‹เชฒเซเชฏเซเชถเชจเซเชธ เชฎเชพเชŸเซ‡ เชธเชฐเซเชตเชฐ เชฌเชพเชœเซ เชชเชฐ เชธเชฐเซเชตเชฐ เช˜เชŸเช• เชนเซ‹เชธเซเชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชจเซ‡ เชจ เชคเซ‹ เชชเชฐเชฟเชตเชนเชจ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชคเชฐเซ€เช•เซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. UDP. เชตเชฟเชกเชฟเช“ เช•เซ‹เชจเซเชซเชฐเชจเซเชธเชฟเช‚เช— เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เช…เชจเซ‡ เช—เซ‡เชฎเซเชธ เชœเซ‡เชตเซ€ เชฐเซ€เช…เชฒ-เชŸเชพเช‡เชฎ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เช† เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชชเซ‡เช•เซ‡เชŸเซ‹เชจเซ€ เชกเชฟเชฒเชฟเชตเชฐเซ€ เช…เชจเซ‡ เช“เชฐเซเชกเชฐเชจเซ€ เช–เชพเชคเชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เชŸเซ€เชธเซ€เชชเซ€ เช“เช›เซ€ เชตเชฟเชฒเช‚เชฌเชคเชพ เชฎเชพเชŸเซ‡ เช…เชตเชฐเซ‹เชง เชฌเชจเซ€ เชถเช•เซ‡ เช›เซ‡.

เชคเซเชฐเซ€เชœเซ€ เชฐเซ€เชค เช›เซ‡ - เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚เชฅเซ€ เชจเซ‡เชŸเชตเชฐเซเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹: WebRTC.

RTCDataChannel เชคเซ‡ เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เช…เชจเซ‡ เช…เชตเชฟเชถเซเชตเชธเชจเซ€เชฏ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ เชฌเช‚เชจเซ‡เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡ (เชชเช›เซ€เชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชœเซเชฏเชพเชฐเซ‡ เชชเชฃ เชถเช•เซเชฏ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชคเซ‡ เชชเชฐเชฟเชตเชนเชจ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ เชคเชฐเซ€เช•เซ‡ UDPเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‡ เช›เซ‡), เช…เชจเซ‡ เชฐเชฟเชฎเซ‹เชŸ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ‡ เช…เชจเซ‡ เชฌเซเชฐเชพเช‰เชเชฐเซเชธ เชตเชšเซเชšเซ‡ เชฌเช‚เชจเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เช…เชฎเซ‡ เชธเชฐเซเชตเชฐ เช˜เชŸเช• เชธเชนเชฟเชค เชธเชฎเช—เซเชฐ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชชเซ‹เชฐเซเชŸ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช!

เชœเซ‹ เช•เซ‡, เช† เชเช• เชตเชงเชพเชฐเชพเชจเซ€ เชฎเซเชถเซเช•เซ‡เชฒเซ€ เชธเชพเชฅเซ‡ เช†เชตเซ‡ เช›เซ‡: เชฌเซ‡ WebRTC เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹ เชตเชพเชคเชšเซ€เชค เช•เชฐเซ€ เชถเช•เซ‡ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚, เชคเซ‡เช“เช เช•เชจเซ‡เช•เซเชŸ เชฅเชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชœเชŸเชฟเชฒ เชนเซ‡เชจเซเชกเชถเซ‡เช• เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เช˜เชฃเซ€ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เชธเช‚เชธเซเชฅเชพเช“ (เชเช• เชธเชฟเช—เซเชจเชฒเชฟเช‚เช— เชธเชฐเซเชตเชฐ เช…เชจเซ‡ เชเช• เช…เชฅเชตเชพ เชตเชงเซ เชธเชฐเซเชตเชฐเซเชธ) เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. STUN/เชŸเชฐเซเชจ).

เช†เชฆเชฐเซเชถเชฐเซ€เชคเซ‡, เช…เชฎเซ‡ เชเช• เชจเซ‡เชŸเชตเชฐเซเช• API เชฌเชจเชพเชตเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช เชœเซ‡ เช†เช‚เชคเชฐเชฟเช• เชฐเซ€เชคเซ‡ WebRTC เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ UDP เชธเซ‹เช•เซ‡เชŸเซเชธ เช‡เชจเซเชŸเชฐเชซเซ‡เชธเชจเซ€ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซ€ เชจเชœเซ€เช• เช›เซ‡ เชœเซ‡เชจเซ‡ เช•เชจเซ‡เช•เซเชถเชจ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€.

เช†เชจเชพเชฅเซ€ เช…เชฎเชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‹เชก (เชœเซ‡เชจเซ‡ เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซเช‚ เช“เช›เซเช‚ เชฌเชฆเชฒเชตเชพ เชฎเชพเช—เซ€เช เช›เซ€เช) เชชเชฐ เชœเชŸเชฟเชฒ เชตเชฟเช—เชคเซ‹ เชฆเชฐเซเชถเชพเชตเซเชฏเชพ เชตเชฟเชจเชพ WebRTC เชจเซ‹ เชฒเชพเชญ เชฒเซ‡เชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡.

เชจเซเชฏเซ‚เชจเชคเชฎ WebRTC

WebRTC เช เชฌเซเชฐเชพเช‰เชเชฐเซเชธเชฎเชพเช‚ เช‰เชชเชฒเชฌเซเชง API เชจเซ‹ เชธเชฎเซ‚เชน เช›เซ‡ เชœเซ‡ เช‘เชกเชฟเช“, เชตเชฟเชกเชฟเชฏเซ‹ เช…เชจเซ‡ เชฎเชจเชธเซเชตเซ€ เชกเซ‡เชŸเชพเชจเซเช‚ เชชเซ€เช…เชฐ-เชŸเซ-เชชเซ€เช…เชฐ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡.

ICE เชจเชพเชฎเชจเซ€ เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เชฆเซเชตเชพเชฐเชพ STUN เช…เชจเซ‡/เช…เชฅเชตเชพ เชŸเชฐเซเชจ เชธเชฐเซเชตเชฐเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹ เชตเชšเซเชšเซ‡ เชœเซ‹เชกเชพเชฃ เชธเซเชฅเชพเชชเชฟเชค เชฅเชพเชฏ เช›เซ‡ (เชญเชฒเซ‡ เชเช• เช…เชฅเชตเชพ เชฌเช‚เชจเซ‡ เชฌเชพเชœเซเช NAT เชนเซ‹เชฏ). เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹ SDP เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒเชจเซ€ เช“เชซเชฐ เช…เชจเซ‡ เชœเชตเชพเชฌ เชฆเซเชตเชพเชฐเชพ ICE เชฎเชพเชนเชฟเชคเซ€ เช…เชจเซ‡ เชšเซ‡เชจเชฒ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ€ เช†เชชเชฒเซ‡ เช•เชฐเซ‡ เช›เซ‡.

เชตเชพเชน! เชเช• เชธเชฎเชฏเซ‡ เช•เซ‡เชŸเชฒเชพ เชธเช‚เช•เซเชทเชฟเชชเซเชค เชถเชฌเซเชฆเซ‹? เชšเชพเชฒเซ‹ เชŸเซ‚เช‚เช•เชฎเชพเช‚ เชธเชฎเชœเชพเชตเซ€เช เช•เซ‡ เช† เชถเชฌเซเชฆเซ‹เชจเซ‹ เช…เชฐเซเชฅ เชถเซเช‚ เช›เซ‡:

  • NAT เชฎเชพเชŸเซ‡ เชธเชคเซเชฐ เชŸเซเชฐเชพเชตเชฐเซเชธเชฒ เชฏเซเชŸเชฟเชฒเชฟเชŸเซ€เช (STUN) โ€” NAT เชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเชตเชพ เช…เชจเซ‡ เชนเซ‹เชธเซเชŸ เชธเชพเชฅเซ‡ เชธเซ€เชงเชพ เชกเซ‡เชŸเชพเชจเซ€ เช†เชชเชฒเซ‡ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชœเซ‹เชกเซ€ (IP, เชชเซ‹เชฐเซเชŸ) เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ. เชœเซ‹ เชคเซ‡ เชคเซ‡เชจเซเช‚ เช•เชพเชฐเซเชฏ เชชเซ‚เชฐเซเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹ เชธเซเชตเชคเช‚เชคเซเชฐ เชฐเซ€เชคเซ‡ เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชกเซ‡เชŸเชพเชจเซเช‚ เชตเชฟเชจเชฟเชฎเชฏ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.
  • NAT เชจเซ€ เช†เชธเชชเชพเชธ เชฐเชฟเชฒเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชŸเซเชฐเชพเชตเชฐเซเชธเชฒ (เชŸเชฐเซเชจ) NAT เชŸเซเชฐเชพเชตเชฐเซเชธเชฒ เชฎเชพเชŸเซ‡ เชชเชฃ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชชเซเชฐเซ‹เช•เซเชธเซ€ เชฆเซเชตเชพเชฐเชพ เชกเซ‡เชŸเชพ เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชจเซ‹ เช…เชฎเชฒ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡ เชฌเช‚เชจเซ‡ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹เชจเซ‡ เชฆเซ‡เช–เชพเชฏ เช›เซ‡. เชคเซ‡ เชฒเซ‡เชŸเชจเซเชธเซ€ เช‰เชฎเซ‡เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ STUN เช•เชฐเชคเชพเช‚ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเซเช‚ เชตเชงเซ เช–เชฐเซเชšเชพเชณ เช›เซ‡ (เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชธเชฎเช—เซเชฐ เชธเช‚เชšเชพเชฐ เชธเชคเซเชฐ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡), เชชเชฐเช‚เชคเซ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชคเซ‡ เชเช•เชฎเชพเชคเซเชฐ เชตเชฟเช•เชฒเซเชช เชนเซ‹เชฏ เช›เซ‡.
  • เช‡เชจเซเชŸเชฐเซ‡เช•เซเชŸเชฟเชต เช•เชจเซ‡เช•เซเชŸเชฟเชตเชฟเชŸเซ€ เชเชธเซเชŸเชพเชฌเซเชฒเชฟเชถเชฎเซ‡เชจเซเชŸ (ICE) เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹เชจเซ‡ เชธเซ€เชงเชพ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเชพเชฅเซ€ เชฎเซ‡เชณเชตเซ‡เชฒเซ€ เชฎเชพเชนเชฟเชคเซ€ เชคเซ‡เชฎเชœ เช•เซ‹เชˆเชชเชฃ เชธเช‚เช–เซเชฏเชพเชฌเช‚เชง STUN เช…เชจเซ‡ TURN เชธเชฐเซเชตเชฐเซเชธ เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชพเชชเซเชค เชฎเชพเชนเชฟเชคเซ€เชจเชพ เช†เชงเชพเชฐเซ‡ เชฌเซ‡ เชชเซ€เช…เชฐเชจเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเชพเชจเซ€ เชถเซเชฐเซ‡เชทเซเช  เชธเช‚เชญเชตเชฟเชค เชชเชฆเซเชงเชคเชฟ เชชเชธเช‚เชฆ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชฏ เช›เซ‡.
  • เชธเชคเซเชฐ เชตเชฐเซเชฃเชจ เชชเซเชฐเซ‹เชŸเซ‹เช•เซ‹เชฒ (เชเชธเชกเซ€เชชเซ€) เช•เชจเซ‡เช•เซเชถเชจ เชšเซ‡เชจเชฒ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเซเชธเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซเช‚ เชเช• เชซเซ‹เชฐเซเชฎเซ‡เชŸ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, ICE เช‰เชฎเซ‡เชฆเชตเชพเชฐเซ‹, เชฎเชฒเซเชŸเซ€เชฎเซ€เชกเชฟเชฏเชพ เช•เซ‹เชกเซ‡เช•เซเชธ (เช“เชกเชฟเชฏเซ‹/เชตเชฟเชกเชฟเชฏเซ‹ เชšเซ‡เชจเชฒเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚), เชตเช—เซ‡เชฐเซ‡... เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹เชฎเชพเช‚เชฅเซ€ เชเช• SDP เช‘เชซเชฐ เชฎเซ‹เช•เชฒเซ‡ เช›เซ‡, เช…เชจเซ‡ เชฌเซ€เชœเซ‹ SDP เชœเชตเชพเชฌ เชธเชพเชฅเซ‡ เชœเชตเชพเชฌ เช†เชชเซ‡ เช›เซ‡. . เช† เชชเช›เซ€, เชเช• เชšเซ‡เชจเชฒ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เช†เชตเซเช‚ เช•เชจเซ‡เช•เซเชถเชจ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชธเชพเชฅเซ€เช“เช STUN เช…เชจเซ‡ เชŸเชฐเซเชจ เชธเชฐเซเชตเชฐเซเชธเชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชณเชตเซ‡เชฒเซ€ เชฎเชพเชนเชฟเชคเซ€ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชคเซ‡เชจเซ€ เช†เชชเชฒเซ‡ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชธเชฎเชธเซเชฏเชพ เช เช›เซ‡ เช•เซ‡ เชคเซ‡เชฎเชจเซ€ เชชเชพเชธเซ‡ เชนเชœเซ เชธเซเชงเซ€ เชธเซ€เชงเซ‹ เชธเช‚เชšเชพเชฐ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เช† เชกเซ‡เชŸเชพเชจเซ€ เช†เชช-เชฒเซ‡ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช†เช‰เชŸ-เช“เชซ-เชฌเซ‡เชจเซเชก เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช: เชธเชฟเช—เซเชจเชฒเชฟเช‚เช— เชธเชฐเซเชตเชฐ.

เชธเชฟเช—เซเชจเชฒเชฟเช‚เช— เชธเชฐเซเชตเชฐ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เชจเซเช‚ เชเช•เชฎเชพเชคเซเชฐ เช•เชพเชฐเซเชฏ เชนเซ‡เชจเซเชกเชถเซ‡เช• เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹ เชตเชšเซเชšเซ‡ เชกเซ‡เชŸเชพ เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡ (เชจเซ€เชšเซ‡เชจเชพ เชšเชฟเชคเซเชฐเชฎเชพเช‚ เชฌเชคเชพเชตเซเชฏเชพ เชชเซเชฐเชฎเชพเชฃเซ‡).

Cheerp, WebRTC เช…เชจเซ‡ Firebase เชธเชพเชฅเซ‡ C++ เชฅเซ€ เชตเซ‡เชฌ เชชเชฐ เชฎเชฒเซเชŸเชฟเชชเซเชฒเซ‡เชฏเชฐ เช—เซ‡เชฎ เชชเซ‹เชฐเซเชŸเชฟเช‚เช—
เชธเชฐเชณ เชตเซ‡เชฌเช†เชฐเชŸเซ€เชธเซ€ เชนเซ‡เชจเซเชกเชถเซ‡เช• เชธเชฟเช•เซเชตเชจเซเชธ เชกเชพเชฏเชพเช—เซเชฐเชพเชฎ

Teeworlds เชจเซ‡เชŸเชตเชฐเซเช• เชฎเซ‹เชกเชฒ เชตเชฟเชนเช‚เช—เชพเชตเชฒเซ‹เช•เชจ

Teeworlds เชจเซ‡เชŸเชตเชฐเซเช• เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เช›เซ‡:

  • เช•เซเชฒเชพเชฏเช‚เชŸ เช…เชจเซ‡ เชธเชฐเซเชตเชฐ เช˜เชŸเช•เซ‹ เชฌเซ‡ เช…เชฒเช— เช…เชฒเช— เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช›เซ‡.
  • เช•เซเชฒเชพเชฏเชจเซเชŸเซเชธ เช˜เชฃเชพ เชธเชฐเซเชตเชฐเซเชธเชฎเชพเช‚เชฅเซ€ เชเช• เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซ€เชจเซ‡ เชฐเชฎเชคเชฎเชพเช‚ เชชเซเชฐเชตเซ‡เชถ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฎเชพเช‚เชจเชพ เชฆเชฐเซ‡เช• เชเช• เชธเชฎเชฏเซ‡ เชฎเชพเชคเซเชฐ เชเช• เชœ เชฐเชฎเชค เชนเซ‹เชธเซเชŸ เช•เชฐเซ‡ เช›เซ‡.
  • เชฐเชฎเชคเชฎเชพเช‚ เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เชธเชฐเซเชตเชฐ เชฆเซเชตเชพเชฐเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.
  • เช—เซ‡เชฎ เช•เซเชฒเชพเชฏเช‚เชŸเชฎเชพเช‚ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เชฅเชคเชพ เชคเชฎเชพเชฎ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชธเชฐเซเชตเชฐเชจเซ€ เชฏเชพเชฆเซ€ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เช–เชพเชธ เชฎเชพเชธเซเชŸเชฐ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชกเซ‡เชŸเชพ เชเช•เซเชธเชšเซ‡เชจเซเชœ เชฎเชพเชŸเซ‡ WebRTC เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฌเชฆเชฒ เช†เชญเชพเชฐ, เช…เชฎเซ‡ เชฐเชฎเชคเชจเชพ เชธเชฐเซเชตเชฐ เช˜เชŸเช•เชจเซ‡ เชคเซ‡ เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เชœเซเชฏเชพเช‚ เช•เซเชฒเชพเชฏเช‚เชŸ เชธเซเชฅเชฟเชค เช›เซ‡. เช† เช…เชฎเชจเซ‡ เชเช• เชฎเชนเชพเชจ เชคเช• เช†เชชเซ‡ เช›เซ‡ ...

เชธเชฐเซเชตเชฐเซ‹เชฅเซ€ เช›เซเชŸเช•เชพเชฐเซ‹ เชฎเซ‡เชณเชตเซ‹

เชธเชฐเซเชตเชฐ เชฒเซ‹เชœเซ€เช•เชจเชพ เช…เชญเชพเชตเชจเซ‹ เชเช• เชธเชฐเชธ เชซเชพเชฏเชฆเซ‹ เช›เซ‡: เช…เชฎเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช—เซ€เชฅเชฌ เชชเซƒเชทเซเช เซ‹ เชชเชฐ เชธเซเชฅเชฟเชฐ เชธเชพเชฎเช—เซเชฐเซ€ เชคเชฐเซ€เช•เซ‡ เช…เชฅเชตเชพ Cloudflare เชชเชพเช›เชณเชจเชพ เช…เชฎเชพเชฐเชพ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชชเชฐ เชœเชฎเชพเชตเซ€ เชถเช•เซ€เช เช›เซ€เช, เช†เชฎ เชเชกเชชเซ€ เชกเชพเช‰เชจเชฒเซ‹เชกเซเชธ เช…เชจเซ‡ เช‰เชšเซเชš เช…เชชเชŸเชพเช‡เชฎ เชฎเชซเชคเชฎเชพเช‚ เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช. เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เช†เชชเชฃเซ‡ เชคเซ‡เชฎเชจเชพ เชตเชฟเชถเซ‡ เชญเซ‚เชฒเซ€ เชถเช•เซ€เช เช›เซ€เช, เช…เชจเซ‡ เชœเซ‹ เช†เชชเชฃเซ‡ เชจเชธเซ€เชฌเชฆเชพเชฐ เชนเซ‹เชˆเช เช…เชจเซ‡ เชฐเชฎเชค เชฒเซ‹เช•เชชเซเชฐเชฟเชฏ เชฌเชจเซ€ เชœเชพเชฏ, เชคเซ‹ เชชเช›เซ€ เชˆเชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเซ‡ เช†เชงเซเชจเชฟเช• เชฌเชจเชพเชตเชตเซเช‚ เชชเชกเชถเซ‡ เชจเชนเซ€เช‚.

เชœเซ‹ เช•เซ‡, เชธเชฟเชธเซเชŸเชฎ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเชพเชฐเซ‡ เชนเชœเซ เชชเชฃ เชฌเชพเชนเซเชฏ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชชเชกเชถเซ‡:

  • เชเช• เช…เชฅเชตเชพ เชตเชงเซ STUN เชธเชฐเซเชตเชฐเซเชธ: เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชชเชธเช‚เชฆเช—เซ€ เชฎเชพเชŸเซ‡ เช˜เชฃเชพ เชฎเชซเชค เชตเชฟเช•เชฒเซเชชเซ‹ เช›เซ‡.
  • เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชเช• เชŸเชฐเซเชจ เชธเชฐเซเชตเชฐ: เช…เชนเซ€เช‚ เช•เซ‹เชˆ เชฎเชซเชค เชตเชฟเช•เชฒเซเชชเซ‹ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เช•เชพเช‚ เชคเซ‹ เช†เชชเชฃเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ เชธเซ‡เชŸเช…เชช เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เช…เชฅเชตเชพ เชธเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เชšเซ‚เช•เชตเชฃเซ€ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช. เชธเชฆเชจเชธเซ€เชฌเซ‡, เชฎเซ‹เชŸเชพเชญเชพเช—เซ‡ STUN เชธเชฐเซเชตเชฐเซเชธ เชฆเซเชตเชพเชฐเชพ เช•เชจเซ‡เช•เซเชถเชจ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ (เช…เชจเซ‡ เชธเชพเชšเซเช‚ p2p เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡), เชชเชฐเช‚เชคเซ เชซเซ‹เชฒเชฌเซ‡เช• เชตเชฟเช•เชฒเซเชช เชคเชฐเซ€เช•เซ‡ เชŸเชฐเซเชจเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.
  • เชธเชฟเช—เซเชจเชฒเชฟเช‚เช— เชธเชฐเซเชตเชฐ: เช…เชจเซเชฏ เชฌเซ‡ เชชเชพเชธเชพเช“เชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, เชธเชฟเช—เซเชจเชฒเชฟเช‚เช— เชชเซเชฐเชฎเชพเชฃเชฟเชค เชจเชฅเซ€. เชธเชฟเช—เซเชจเชฒเชฟเช‚เช— เชธเชฐเซเชตเชฐ เช–เชฐเซ‡เช–เชฐ เชถเซเช‚ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เชนเชถเซ‡ เชคเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเชฐ เช•เช‚เชˆเช• เช…เช‚เชถเซ‡ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡. เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช•เชจเซ‡เช•เซเชถเชจ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ, เชฅเซ‹เชกเซ€ เชฎเชพเชคเซเชฐเชพเชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซเช‚ เชตเชฟเชจเชฟเชฎเชฏ เช•เชฐเชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.
  • Teeworlds Master Server: เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช…เชจเซเชฏ เชธเชฐเซเชตเชฐเซเชธ เชฆเซเชตเชพเชฐเชพ เชคเซ‡เชฎเชจเชพ เช…เชธเซเชคเชฟเชคเซเชตเชจเซ€ เชœเชพเชนเซ‡เชฐเชพเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เช•เซเชฒเชพเชฏเชจเซเชŸ เชฆเซเชตเชพเชฐเชพ เชœเชพเชนเซ‡เชฐ เชธเชฐเซเชตเชฐเซเชธ เชถเซ‹เชงเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เชคเซ‡ เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€ (เช•เซเชฒเชพเชฏเชจเซเชŸ เชนเช‚เชฎเซ‡เชถเชพ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ เชœเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชคเซ‡เช“ เชœเชพเชคเซ‡ เชœเชพเชฃเซ‡ เช›เซ‡), เชคเซ‡ เชธเชฐเชธ เชฐเชนเซ‡เชถเซ‡ เชœเซ‡เชฅเซ€ เช–เซ‡เชฒเชพเชกเซ€เช“ เชฐเซ‡เชจเซเชกเชฎ เชฒเซ‹เช•เซ‹ เชธเชพเชฅเซ‡ เชฐเชฎเชคเซ‹เชฎเชพเช‚ เชญเชพเช— เชฒเชˆ เชถเช•เซ‡.

เช…เชฎเซ‡ Google เชจเชพ เชฎเชซเชค STUN เชธเชฐเซเชตเชฐเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚, เช…เชจเซ‡ เชเช• เชŸเชฐเซเชจ เชธเชฐเซเชตเชฐ เชœเชพเชคเซ‡ เช—เซ‹เช เชตเซเชฏเซเช‚.

เช›เซ‡เชฒเซเชฒเชพ เชฌเซ‡ เชฎเซเชฆเซเชฆเชพเช“ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เชซเชพเชฏเชฐเชฌเซ‡เช:

  • Teeworlds เชฎเชพเชธเซเชŸเชฐ เชธเชฐเซเชตเชฐ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เชฐเซ€เชคเซ‡ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡: เชฆเชฐเซ‡เช• เชธเช•เซเชฐเชฟเชฏ เชธเชฐเซเชตเชฐเชจเซ€ เชฎเชพเชนเชฟเชคเซ€ (เชจเชพเชฎ, IP, เชจเช•เชถเซ‹, เชฎเซ‹เชก, ...) เชงเชฐเชพเชตเชคเซ€ เชตเชธเซเชคเซเช“เชจเซ€ เชธเซ‚เชšเชฟ เชคเชฐเซ€เช•เซ‡. เชธเชฐเซเชตเชฐเซเชธ เชคเซ‡เชฎเชจเชพ เชชเซ‹เชคเชพเชจเชพ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชจเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เช•เซเชฒเชพเชฏเช‚เชŸ เช†เช–เซ€ เชธเซ‚เชšเชฟ เชฒเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชชเซเชฒเซ‡เชฏเชฐ เชชเชฐ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เช…เชฎเซ‡ เชนเซ‹เชฎ เชชเซ‡เชœ เชชเชฐ เชเชšเชŸเซ€เชเชฎเชเชฒ เชคเชฐเซ€เช•เซ‡ เชธเซ‚เชšเชฟ เชชเชฃ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ€เช เช›เซ€เช เชœเซ‡เชฅเซ€ เช–เซ‡เชฒเชพเชกเซ€เช“ เชธเชฐเซเชตเชฐ เชชเชฐ เช•เซเชฒเชฟเช• เช•เชฐเซ€ เชถเช•เซ‡ เช…เชจเซ‡ เชธเซ€เชงเชพ เชฐเชฎเชค เชชเชฐ เชฒเชˆ เชœเชˆ เชถเช•เซ‡.
  • เชธเชฟเช—เซเชจเชฒเชฟเช‚เช— เช…เชฎเชพเชฐเชพ เชธเซ‹เช•เซ‡เชŸเซเชธ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชธเชพเชฅเซ‡ เช—เชพเชข เชฐเซ€เชคเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เช›เซ‡, เชœเซ‡ เช†เช—เชณเชจเชพ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เช›เซ‡.

Cheerp, WebRTC เช…เชจเซ‡ Firebase เชธเชพเชฅเซ‡ C++ เชฅเซ€ เชตเซ‡เชฌ เชชเชฐ เชฎเชฒเซเชŸเชฟเชชเซเชฒเซ‡เชฏเชฐ เช—เซ‡เชฎ เชชเซ‹เชฐเซเชŸเชฟเช‚เช—
เชฐเชฎเชคเชจเซ€ เช…เช‚เชฆเชฐ เช…เชจเซ‡ เชนเซ‹เชฎ เชชเซ‡เชœ เชชเชฐ เชธเชฐเซเชตเชฐเชจเซ€ เชธเซ‚เชšเชฟ

เชธเซ‹เช•เซ‡เชŸเซเชธเชจเซเช‚ เช…เชฎเชฒเซ€เช•เชฐเชฃ

เชœเชฐเซ‚เชฐเซ€ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ€ เชธเช‚เช–เซเชฏเชพ เช˜เชŸเชพเชกเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เชเช• API เชฌเชจเชพเชตเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช เชœเซ‡ Posix UDP เชธเซ‹เช•เซ‡เชŸเซเชธเชจเซ€ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซ€ เชจเชœเซ€เช• เชนเซ‹เชฏ.

เช…เชฎเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชชเชฐ เชธเซŒเชฅเซ€ เชธเชฐเชณ เชกเซ‡เชŸเชพ เชเช•เซเชธเชšเซ‡เชจเซเชœ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชจเซเชฏเซ‚เชจเชคเชฎเชจเซ‡ เชชเชฃ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช.

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช…เชฎเชพเชฐเซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เชฐเซ‚เชŸเซ€เช‚เช—เชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€: เชฌเชงเชพ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹ เชšเซ‹เช•เซเช•เชธ เชซเชพเชฏเชฐเชฌเซ‡เช เชกเซ‡เชŸเชพเชฌเซ‡เช เช‰เชฆเชพเชนเชฐเชฃ เชธเชพเชฅเซ‡ เชธเช‚เช•เชณเชพเชฏเซ‡เชฒ เชธเชฎเชพเชจ "เชตเชฐเซเชšเซเชฏเซเช…เชฒ LAN" เชชเชฐ เช›เซ‡.

เชคเซ‡เชฅเซ€, เช…เชฎเชจเซ‡ เช…เชจเชจเซเชฏ IP เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€: เช…เชจเชจเซเชฏ เชซเชพเชฏเชฐเชฌเซ‡เช เช•เซ€ เชฎเซ‚เชฒเซเชฏเซ‹ (เชกเซ‹เชฎเซ‡เชจ เชจเชพเชฎเซ‹เชจเซ€ เชœเซ‡เชฎ) เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹เชจเซ‡ เช…เชจเชจเซเชฏ เชฐเซ€เชคเซ‡ เช“เชณเช–เชตเชพ เชฎเชพเชŸเซ‡ เชชเชฐเซเชฏเชพเชชเซเชค เช›เซ‡, เช…เชจเซ‡ เชฆเชฐเซ‡เช• เชชเซ€เช…เชฐ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เชฆเชฐเซ‡เช• เช•เซ€เชจเซ‡ "เชจเช•เชฒเซ€" 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 เชธเชฐเชณ เช…เชจเซ‡ เชชเซ‹เชธเชฟเช•เซเชธ เชธเซ‹เช•เซ‡เชŸเซเชธ API เชœเซ‡เชตเซเช‚ เชœ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชพเช‚ เช•เซ‡เชŸเชฒเชพเช• เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชคเชซเชพเชตเชคเซ‹ เช›เซ‡: เช•เซ‰เชฒเชฌเซ…เช•เซเชธ เชฒเซ‰เช—เชฟเช‚เช—, เชธเซเชฅเชพเชจเชฟเช• IP เชธเซ‹เช‚เชชเชตเชพ, เช…เชจเซ‡ เช†เชณเชธเซ เช•เชจเซ‡เช•เซเชถเชจ.

เช•เซ‰เชฒเชฌเซ…เช•เซเชธเชจเซ€ เชจเซ‹เช‚เชงเชฃเซ€ เช•เชฐเซ€ เชฐเชนเซเชฏเชพเช‚ เช›เซ€เช

เชœเซ‹ เชฎเซ‚เชณ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชจเซ‹เชจ-เชฌเซเชฒเซ‹เช•เชฟเช‚เช— 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 เชธเซ‹เช‚เชชเชฃเซ€

เช…เชฎเชพเชฐเชพ "เชจเซ‡เชŸเชตเชฐเซเช•" เชฎเชพเช‚ เชจเซ‹เชก ID เช IP เชธเชฐเชจเชพเชฎเชพเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชซเชพเชฏเชฐเชฌเซ‡เช เช•เซ€ เช›เซ‡ (เชคเซ‡ เช†เชจเชพ เชœเซ‡เชตเซ€ เชธเซเชŸเซเชฐเซ€เช‚เช—เซเชธ เช›เซ‡: -LmEC50PYZLCiCP-vqde ).

เช† เช…เชจเซเช•เซ‚เชณ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเชจเซ‡ IP เชจเซ‡ เชธเซ‹เช‚เชชเชตเชพ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เชตเชฟเชถเชฟเชทเซเชŸเชคเชพ เชšเช•เชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชˆ เชชเชฆเซเชงเชคเชฟเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ (เชคเซ‡เชฎเชœ เช•เซเชฒเชพเชฏเช‚เชŸ เชกเชฟเชธเซเช•เชจเซ‡เช•เซเชŸ เชฅเชฏเชพ เชชเช›เซ€ เชคเซ‡เชจเซ‹ เชจเชฟเช•เชพเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡), เชชเชฐเช‚เชคเซ เชธเช‚เช–เซเชฏเชพเชคเซเชฎเช• เชฎเซ‚เชฒเซเชฏ เชฆเซเชตเชพเชฐเชพ เชธเชพเชฅเซ€เช“เชจเซ€ เช“เชณเช– เช•เชฐเชตเซ€ เช˜เชฃเซ€ เชตเช–เชค เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.

เช† เชฌเชฐเชพเชฌเชฐ เช›เซ‡ เช•เซ‡ เชœเซ‡ เช•เชพเชฐเซเชฏเซ‹ เชฎเชพเชŸเซ‡ เชตเชชเชฐเชพเชฏ เช›เซ‡. resolve ะธ reverseResolve: เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ เช•เซ€เชจเซ€ เชธเซเชŸเซเชฐเชฟเช‚เช— เชตเซ‡เชฒเซเชฏเซ (เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช‡เชจเชชเซเชŸ เชฆเซเชตเชพเชฐเชพ เช…เชฅเชตเชพ เชฎเชพเชธเซเชŸเชฐ เชธเชฐเซเชตเชฐ เชฆเซเชตเชพเชฐเชพ) เชฎเซ‡เชณเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช†เช‚เชคเชฐเชฟเช• เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ IP เชเชกเซเชฐเซ‡เชธเชฎเชพเช‚ เช•เชจเซเชตเชฐเซเชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชฌเชพเช•เซ€เชจเชพ API เชชเชฃ เชธเชฐเชณเชคเชพ เชฎเชพเชŸเซ‡ เชธเซเชŸเซเชฐเชฟเช‚เช—เชจเซ‡ เชฌเชฆเชฒเซ‡ เช† เชฎเซ‚เชฒเซเชฏ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡.

เช† DNS เชฒเซเช•เช…เชช เชœเซ‡เชตเซเช‚ เชœ เช›เซ‡, เชชเชฐเช‚เชคเซ เช•เซเชฒเชพเชฏเชจเซเชŸ เชชเชฐ เชธเซเชฅเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เชเชŸเชฒเซ‡ เช•เซ‡, IP เชเชกเซเชฐเซ‡เชธ เช…เชฒเช—-เช…เชฒเช— เช•เซเชฒเชพเชฏเชจเซเชŸเซเชธ เชตเชšเซเชšเซ‡ เชถเซ‡เชฐ เช•เชฐเซ€ เชถเช•เชพเชคเชพ เชจเชฅเซ€, เช…เชจเซ‡ เชœเซ‹ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเชพ เชตเซˆเชถเซเชตเชฟเช• เช“เชณเช–เช•เชฐเซเชคเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡เชจเซ‡ เช…เชฒเช— เชฐเซ€เชคเซ‡ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเซเช‚ เชชเชกเชถเซ‡.

เช†เชณเชธเซ เชœเซ‹เชกเชพเชฃ

UDP เชจเซ‡ เช•เชจเซ‡เช•เซเชถเชจเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชœเซ‡เชฎ เช†เชชเชฃเซ‡ เชœเซ‹เชฏเซเช‚ เชคเซ‡เชฎ, WebRTC เช เชฌเซ‡ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹ เชตเชšเซเชšเซ‡ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚ เชคเซ‡เชจเซ‡ เชฒเชพเช‚เชฌเซ€ เช•เชจเซ‡เช•เซเชถเชจ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชœเซ‹ เช†เชชเชฃเซ‡ เชเชฌเซเชธเซเชŸเซเชฐเซ‡เช•เซเชถเชจเชจเซเช‚ เชธเชฎเชพเชจ เชธเซเชคเชฐ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช, (sendto/recvfrom เช…เช—เชพเช‰เชจเชพ เชœเซ‹เชกเชพเชฃ เชตเชฟเชจเชพ เชฎเชจเชธเซเชตเซ€ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹ เชธเชพเชฅเซ‡), เชชเช›เซ€ เชคเซ‡เช“เช API เชจเซ€ เช…เช‚เชฆเชฐ "เช†เชณเชธเซ" (เชตเชฟเชฒเช‚เชฌเชฟเชค) เชœเซ‹เชกเชพเชฃ เช•เชฐเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡.

UDP เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ "เชธเชฐเซเชตเชฐ" เช…เชจเซ‡ "เช•เซเชฒเชพเชฏเชจเซเชŸ" เชตเชšเซเชšเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชธเช‚เชšเชพเชฐ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช†เชตเซเช‚ เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เช…เชฎเชพเชฐเซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช เชถเซเช‚ เช•เชฐเชตเซเช‚ เชœเซ‹เชˆเช:

  • เชธเชฐเซเชตเชฐ เช•เซ‰เชฒเซเชธ bind()เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชจเซ‡ เชœเชฃเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‡ เชคเซ‡ เชจเชฟเชฐเซเชฆเชฟเชทเซเชŸ เชชเซ‹เชฐเซเชŸ เชชเชฐ เชชเซ‡เช•เซ‡เชŸเซ‹ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡.

เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡, เช…เชฎเซ‡ เชธเชฐเซเชตเชฐ เช•เซ€ เชนเซ‡เช เชณ เชซเชพเชฏเชฐเชฌเซ‡เช เชชเชฐ เช“เชชเชจ เชชเซ‹เชฐเซเชŸ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเซ€เชถเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชธเชฌเชŸเซเชฐเซ€เชฎเชพเช‚ เช‡เชตเซ‡เชจเซเชŸเซเชธ เชธเชพเช‚เชญเชณเซ€เชถเซเช‚.

  • เชธเชฐเซเชตเชฐ เช•เซ‰เชฒเซเชธ recvfrom(), เช† เชชเซ‹เชฐเซเชŸ เชชเชฐ เช•เซ‹เชˆเชชเชฃ เชนเซ‹เชธเซเชŸ เชคเชฐเชซเชฅเซ€ เช†เชตเชคเชพ เชชเซ‡เช•เซ‡เชŸเซ‹ เชธเซเชตเซ€เช•เชพเชฐเชตเชพ.

เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช…เชฎเชพเชฐเซ‡ เช† เชชเซ‹เชฐเซเชŸ เชชเชฐ เชฎเซ‹เช•เชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเชพ เชชเซ‡เช•เซ‡เชŸเซ‹เชจเซ€ เช‡เชจเช•เชฎเชฟเช‚เช— เช•เชคเชพเชฐ เชคเชชเชพเชธเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชฆเชฐเซ‡เช• เชชเซ‹เชฐเซเชŸเชจเซ€ เชชเซ‹เชคเชพเชจเซ€ เช•เชคเชพเชฐ เชนเซ‹เชฏ เช›เซ‡, เช…เชจเซ‡ เช…เชฎเซ‡ WebRTC เชกเซ‡เชŸเชพเช—เซเชฐเชพเชฎเชจเซ€ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชธเซเชคเซเชฐเซ‹เชค เช…เชจเซ‡ เช—เช‚เชคเชตเซเชฏ เชฌเช‚เชฆเชฐเซ‹ เช‰เชฎเซ‡เชฐเซ€เช เช›เซ€เช เชœเซ‡เชฅเซ€ เช…เชฎเชจเซ‡ เช–เชฌเชฐ เชชเชกเซ‡ เช•เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชจเชตเซเช‚ เชชเซ‡เช•เซ‡เชŸ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เช•เชˆ เช•เชคเชพเชฐเชจเซ‡ เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเชตเซ€.

เช•เซ‰เชฒ เชฌเชฟเชจ-เชฌเซเชฒเซ‹เช•เชฟเช‚เช— เช›เซ‡, เชคเซ‡เชฅเซ€ เชœเซ‹ เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ เชชเซ‡เช•เซ‡เชŸเซ‹ เชจ เชนเซ‹เชฏ, เชคเซ‹ เช…เชฎเซ‡ เชซเช•เซเชค -1 เชชเชฐเชค เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชธเซ‡เชŸ เช•เชฐเซ€เช เช›เซ€เช errno=EWOULDBLOCK.

  • เช•เซเชฒเชพเชฏเช‚เชŸ เช•เซ‡เชŸเชฒเชพเช• เชฌเชพเชนเซเชฏ เชฎเชพเชงเซเชฏเชฎเซ‹ เชฆเซเชตเชพเชฐเชพ เชธเชฐเซเชตเชฐเชจเซ‹ IP เช…เชจเซ‡ เชชเซ‹เชฐเซเชŸ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เช•เซ‰เชฒเซเชธ เช•เชฐเซ‡ เช›เซ‡ sendto(). เช† เช†เช‚เชคเชฐเชฟเช• เช•เซ‹เชฒ เชชเชฃ เช•เชฐเซ‡ เช›เซ‡. bind(), เชคเซ‡เชฅเซ€ เช…เชจเซเช—เชพเชฎเซ€ recvfrom() เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชฌเชพเช‚เชงเซเชฏเชพ เชตเช—เชฐ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชถเซ‡.

เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช•เซเชฒเชพเชฏเช‚เชŸ เชฌเชพเชนเซเชฏ เชฐเซ€เชคเซ‡ เชธเซเชŸเซเชฐเชฟเช‚เช— เช•เซ€ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชซเช‚เช•เซเชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡ resolve() IP เชธเชฐเชจเชพเชฎเซเช‚ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡.

เช† เชธเชฎเชฏเซ‡, เช…เชฎเซ‡ WebRTC เชนเซ‡เชจเซเชกเชถเซ‡เช• เชถเชฐเซ‚ เช•เชฐเซ€เช เช›เซ€เช เชœเซ‹ เชฌเซ‡ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹ เชนเชœเซ€ เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เชจเชฅเซ€. เชธเชฎเชพเชจ เชชเซ€เช…เชฐเชจเชพ เชตเชฟเชตเชฟเชง เชชเซ‹เชฐเซเชŸ เชธเชพเชฅเซ‡เชจเชพ เชœเซ‹เชกเชพเชฃเซ‹ เชธเชฎเชพเชจ WebRTC เชกเซ‡เชŸเชพเชšเซ‡เชจเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡.

เช…เชฎเซ‡ เช†เชกเช•เชคเชฐเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชชเชฃ เช•เชฐเซ€เช เช›เซ€เช bind()เชœเซ‡เชฅเซ€ เชธเชฐเซเชตเชฐ เช†เช—เชพเชฎเซ€ เชธเชฎเชฏเชฎเชพเช‚ เชซเชฐเซ€เชฅเซ€ เช•เชจเซ‡เช•เซเชŸ เชฅเชˆ เชถเช•เซ‡ sendto() เชœเซ‹ เชคเซ‡ เช•เซ‹เชˆ เช•เชพเชฐเชฃเซ‹เชธเชฐ เชฌเช‚เชง เชฅเชˆ เชœเชพเชฏ.

เชœเซเชฏเชพเชฐเซ‡ เช•เซเชฒเชพเชฏเชจเซเชŸ เชซเชพเชฏเชฐเชฌเซ‡เชเชฎเชพเช‚ เชธเชฐเซเชตเชฐ เชชเซ‹เชฐเซเชŸ เชฎเชพเชนเชฟเชคเซ€ เชนเซ‡เช เชณ เชคเซ‡เชจเซ€ SDP เช‘เชซเชฐ เชฒเช–เซ‡ เช›เซ‡ เชคเซเชฏเชพเชฐเซ‡ เชธเชฐเซเชตเชฐเชจเซ‡ เช•เซเชฒเชพเชฏเช‚เชŸเชจเชพ เช•เชจเซ‡เช•เซเชถเชจเชจเซ€ เชœเชพเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชธเชฐเซเชตเชฐ เชคเซเชฏเชพเช‚ เชคเซ‡เชจเชพ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชธเชพเชฅเซ‡ เชชเซเชฐเชคเชฟเชธเชพเชฆ เช†เชชเซ‡ เช›เซ‡.

เชจเซ€เชšเซ‡เชจเซ‹ เช†เช•เซƒเชคเชฟ เชธเซ‹เช•เซ‡เชŸ เชธเซเช•เซ€เชฎ เชฎเชพเชŸเซ‡ เชธเช‚เชฆเซ‡เชถ เชชเซเชฐเชตเชพเชน เช…เชจเซ‡ เช•เซเชฒเชพเชฏเช‚เชŸเชฅเซ€ เชธเชฐเซเชตเชฐ เชชเชฐ เชชเซเชฐเชฅเชฎ เชธเช‚เชฆเซ‡เชถเชจเชพ เชŸเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เชฌเชคเชพเชตเซ‡ เช›เซ‡:

Cheerp, WebRTC เช…เชจเซ‡ Firebase เชธเชพเชฅเซ‡ C++ เชฅเซ€ เชตเซ‡เชฌ เชชเชฐ เชฎเชฒเซเชŸเชฟเชชเซเชฒเซ‡เชฏเชฐ เช—เซ‡เชฎ เชชเซ‹เชฐเซเชŸเชฟเช‚เช—
เช•เซเชฒเชพเชฏเช‚เชŸ เช…เชจเซ‡ เชธเชฐเซเชตเชฐ เชตเชšเซเชšเซ‡เชจเชพ เชœเซ‹เชกเชพเชฃเชจเชพ เชคเชฌเช•เซเช•เชพเชจเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เชกเชพเชฏเชพเช—เซเชฐเชพเชฎ

เชจเชฟเชทเซเช•เชฐเซเชท

เชœเซ‹ เชคเชฎเซ‡ เช†เชŸเชฒเซเช‚ เชตเชพเช‚เชšเซเชฏเซเช‚ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเชจเซ‡ เช•เชฆเชพเชš เชธเชฟเชฆเซเชงเชพเช‚เชคเชจเซ‡ เช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เชœเซ‹เชตเชพเชฎเชพเช‚ เชฐเชธ เชนเชถเซ‡. เชชเชฐ เชฐเชฎเชค เชฐเชฎเซ€ เชถเช•เชพเชฏ เช›เซ‡ teeworlds.leaningtech.com, เชคเซ‡เชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹!


เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹ เชตเชšเซเชšเซ‡ เชฎเซˆเชคเซเชฐเซ€เชชเซ‚เชฐเซเชฃ เชฎเซ‡เชš

เชจเซ‡เชŸเชตเชฐเซเช• เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เช•เซ‹เชก เชฎเชซเชคเชฎเชพเช‚ เช‰เชชเชฒเชฌเซเชง เช›เซ‡ Github. เชชเชฐ เช…เชฎเชพเชฐเซ€ เชšเซ‡เชจเชฒ เชชเชฐ เชตเชพเชคเชšเซ€เชคเชฎเชพเช‚ เชœเซ‹เชกเชพเช“ เชœเซ€เชŸเชฐ!

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹