Cheerp, WebRTC เจ…เจคเฉ‡ Firebase เจจเจพเจฒ C++ เจคเฉ‹เจ‚ เจตเฉˆเฉฑเจฌ 'เจคเฉ‡ เจฎเจฒเจŸเฉ€เจชเจฒเฉ‡เจ…เจฐ เจ—เฉ‡เจฎ เจจเฉ‚เฉฐ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจเจพ

เจœเจพเจฃ เจชเจ›เจพเจฃ

เจธเจพเจกเฉ€ เจ•เฉฐเจชเจจเฉ€ เจเฉเจ•เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€เจ†เจ‚ เจตเฉˆเฉฑเจฌ 'เจคเฉ‡ เจฐเจตเจพเจ‡เจคเฉ€ เจกเฉˆเจธเจ•เจŸเจพเจช เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจ เจฒเจˆ เจนเฉฑเจฒ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจธเจพเจกเจพ C++ เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจ–เฉเจธเจผ WebAssembly เจ…เจคเฉ‡ JavaScript เจฆเจพ เจธเฉเจฎเฉ‡เจฒ เจคเจฟเจ†เจฐ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเฉ‹ เจฆเฉ‹เจตเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆ เจธเจงเจพเจฐเจจ เจฌเจฐเจพเจŠเจœเจผเจฐ เจ‡เฉฐเจŸเจฐเฉˆเจ•เจธเจผเจจ, เจ…เจคเฉ‡ เจ‰เฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจจ.

เจ‡เจธเจฆเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจตเจœเฉ‹เจ‚, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจฎเจฒเจŸเฉ€เจชเจฒเฉ‡เจ…เจฐ เจ—เฉ‡เจฎ เจจเฉ‚เฉฐ เจตเฉˆเฉฑเจฌ 'เจคเฉ‡ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจ…เจคเฉ‡ เจšเฉเจฃเจฟเจ† Teeworlds. Teeworlds เจ‡เฉฑเจ• เจฎเจฒเจŸเฉ€เจชเจฒเฉ‡เจ…เจฐ 2D เจฐเฉˆเจŸเจฐเฉ‹ เจ—เฉ‡เจฎ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ–เจฟเจกเจพเจฐเฉ€เจ†เจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ‡ เจชเจฐ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจญเจพเจˆเจšเจพเจฐเฉ‡ (เจฎเฉ‡เจฐเฉ‡ เจธเจฎเฉ‡เจค!) เจนเจจเฅค เจ‡เจน เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เฉ€เจคเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจ…เจคเฉ‡ CPU เจ…เจคเฉ‡ GPU เจฒเฉ‹เฉœเจพเจ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ›เฉ‹เจŸเจพ เจนเฉˆ - เจ‡เฉฑเจ• เจ†เจฆเจฐเจธเจผ เจ‰เจฎเฉ€เจฆเจตเจพเจฐเฅค

Cheerp, WebRTC เจ…เจคเฉ‡ Firebase เจจเจพเจฒ C++ เจคเฉ‹เจ‚ เจตเฉˆเฉฑเจฌ 'เจคเฉ‡ เจฎเจฒเจŸเฉ€เจชเจฒเฉ‡เจ…เจฐ เจ—เฉ‡เจฎ เจจเฉ‚เฉฐ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจเจพ
Teeworlds เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจšเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉˆ

เจ…เจธเฉ€เจ‚ เจ‡เจธ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจชเฉเจฐเจฏเฉ‹เจ— เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจตเฉˆเฉฑเจฌ 'เจคเฉ‡ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจ เจฒเจˆ เจ†เจฎ เจนเฉฑเจฒ. เจ‡เจน เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ‡ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเจพเจฒ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ:

  • XMLHttpRequest/fatch, เจœเฉ‡เจ•เจฐ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจญเจพเจ— เจตเจฟเฉฑเจš เจธเจฟเจฐเจซเจผ HTTP เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ, เจœเจพเจ‚
  • เจตเฉˆเจฌเจธเฉŒเจ•เฉ‡เจŸ.

เจฆเฉ‹เจตเจพเจ‚ เจนเฉฑเจฒเจพเจ‚ เจฒเจˆ เจธเจฐเจตเจฐ เจธเจพเจˆเจก 'เจคเฉ‡ เจธเจฐเจตเจฐ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจฆเฉ€ เจฎเฉ‡เจœเจผเจฌเจพเจจเฉ€ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจ…เจคเฉ‡ เจจเจพ เจนเฉ€ เจŸเจฐเจพเจ‚เจธเจชเฉ‹เจฐเจŸ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจตเจœเฉ‹เจ‚ เจตเจฐเจคเจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ UDP. เจ‡เจน เจฐเฉ€เจ…เจฒ-เจŸเจพเจˆเจฎ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจตเฉ€เจกเฉ€เจ“ เจ•เจพเจจเจซเจฐเฉฐเจธเจฟเฉฐเจ— เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจ…เจคเฉ‡ เจ—เฉ‡เจฎเจพเจ‚ เจฒเจˆ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจชเฉˆเจ•เฉ‡เจŸเจพเจ‚ เจฆเฉ€ เจกเจฟเจฒเจฟเจตเจฐเฉ€ เจ…เจคเฉ‡ เจ†เจฐเจกเจฐ เจฆเฉ€ เจ—เจพเจฐเฉฐเจŸเฉ€ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ TCP เจ˜เฉฑเจŸ เจฒเฉ‡เจŸเฉˆเจ‚เจธเฉ€ เจฒเจˆ เจฐเฉเจ•เจพเจตเจŸ เจฌเจฃ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค

เจ‡เฉฑเจ• เจคเฉ€เจœเจพ เจคเจฐเฉ€เจ•เจพ เจนเฉˆ - เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจคเฉ‹เจ‚ เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹: WebRTC.

RTCDataChannel เจ‡เจน เจญเจฐเฉ‹เจธเฉ‡เจฎเฉฐเจฆ เจ…เจคเฉ‡ เจ—เฉˆเจฐ-เจญเจฐเฉ‹เจธเฉ‡เจฏเฉ‹เจ— เจชเฉเจฐเจธเจพเจฐเจฃ เจฆเฉ‹เจจเจพเจ‚ เจฆเจพ เจธเจฎเจฐเจฅเจจ เจ•เจฐเจฆเจพ เจนเฉˆ (เจฌเจพเจ…เจฆ เจฆเฉ‡ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš เจœเจฆเฉ‹เจ‚ เจตเฉ€ เจธเฉฐเจญเจต เจนเฉ‹เจตเฉ‡ เจ‡เฉฑเจ• เจŸเจฐเจพเจ‚เจธเจชเฉ‹เจฐเจŸ เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจตเจœเฉ‹เจ‚ UDP เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจฆเจพ เจนเฉˆ), เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฐเจฟเจฎเฉ‹เจŸ เจธเจฐเจตเจฐ เจ…เจคเฉ‡ เจฌเฉเจฐเจพเจŠเจœเจผเจฐเจพเจ‚ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจฆเฉ‹เจตเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆเฅค เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจธเจฐเจตเจฐ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจธเจฎเฉ‡เจค, เจชเฉ‚เจฐเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจชเฉ‹เจฐเจŸ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚!

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจน เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจฎเฉเจธเจผเจ•เจฒ เจจเจพเจฒ เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆ: เจ‡เจธ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจ•เจฟ เจฆเฉ‹ WebRTC เจธเจพเจฅเฉ€ เจธเฉฐเจšเจพเจฐ เจ•เจฐ เจธเจ•เจฃ, เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจฎเฉเจ•เจพเจฌเจฒเจคเจจ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจนเฉˆเจ‚เจกเจธเจผเฉ‡เจ• เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเจฟเจธ เจฒเจˆ เจ•เจˆ เจฅเจฐเจก-เจชเจพเจฐเจŸเฉ€ เจธเฉฐเจธเจฅเจพเจตเจพเจ‚ (เจ‡เฉฑเจ• เจธเจฟเจ—เจจเจฒ เจธเจฐเจตเจฐ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจœเจพเจ‚ เจตเฉฑเจง เจธเจฐเจตเจฐ) เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ STUN/เจŸเจฐเจจ).

เจ†เจฆเจฐเจธเจผเจ• เจคเฉŒเจฐ 'เจคเฉ‡, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจจเฉˆเฉฑเจŸเจตเจฐเจ• API เจฌเจฃเจพเจ‰เจฃเจพ เจšเจพเจนเจพเจ‚เจ—เฉ‡ เจœเฉ‹ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ WebRTC เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจ‡เฉฑเจ• UDP เจธเจพเจ•เจŸ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ เจฆเฉ‡ เจœเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจธเจ•เฉ‡ เจจเฉ‡เฉœเฉ‡ เจนเฉˆ เจœเจฟเจธ เจจเฉ‚เฉฐ เจ•เจจเฉˆเจ•เจธเจผเจจ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจ‡เจน เจธเจพเจจเฉ‚เฉฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจตเฉ‡เจฐเจตเจฟเจ†เจ‚ เจฆเจพ เจ–เฉเจฒเจพเจธเจพ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ WebRTC เจฆเจพ เจฒเจพเจญ เจฒเฉˆเจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡เจตเฉ‡เจ—เจพ (เจœเจฟเจธ เจจเฉ‚เฉฐ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจœเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจธเจ•เฉ‡ เจ˜เฉฑเจŸ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจฌเจฆเจฒเจฃเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจธเฉ€)เฅค

เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ WebRTC

WebRTC เจฌเฉเจฐเจพเจŠเจœเจผเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจ‰เจชเจฒเจฌเจง API เจฆเจพ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจนเฉˆ เจœเฉ‹ เจ†เจกเฉ€เจ“, เจตเฉ€เจกเฉ€เจ“ เจ…เจคเฉ‡ เจฎเจจเจฎเจพเจจเฉ‡ เจกเฉ‡เจŸเจพ เจฆเจพ เจชเฉ€เจ…เจฐ-เจŸเฉ‚-เจชเฉ€เจ…เจฐ เจŸเฉเจฐเจพเจ‚เจธเจฎเจฟเจธเจผเจจ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจ†เจˆเจธเฉ€เจˆ เจจเจพเจฎเจ• เจ‡เฉฑเจ• เจตเจฟเจงเฉ€ เจฐเจพเจนเฉ€เจ‚ STUN เจ…เจคเฉ‡/เจœเจพเจ‚ เจŸเจฐเจจ เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจธเจพเจฅเฉ€เจ†เจ‚ เจตเจฟเจšเจ•เจพเจฐ เจธเจฌเฉฐเจง เจธเจฅเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ (เจญเจพเจตเฉ‡เจ‚ เจ‡เฉฑเจ• เจœเจพเจ‚ เจฆเฉ‹เจตเฉ‡เจ‚ เจชเจพเจธเฉ‡ NAT เจนเฉ‹เจตเฉ‡)เฅค เจธเจพเจฅเฉ€ SDP เจชเฉเจฐเฉ‹เจŸเฉ‹เจ•เฉ‹เจฒ เจฆเฉ€ เจชเฉ‡เจธเจผเจ•เจธเจผ เจ…เจคเฉ‡ เจœเจตเจพเจฌ เจฆเฉเจ†เจฐเจพ ICE เจœเจพเจฃเจ•เจพเจฐเฉ€ เจ…เจคเฉ‡ เจšเฉˆเจจเจฒ เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐเจพเจ‚ เจฆเจพ เจ†เจฆเจพเจจ-เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจตเจพเจน! เจ‡เฉฑเจ• เจธเจฎเฉ‡เจ‚ เจตเจฟเฉฑเจš เจ•เจฟเฉฐเจจเฉ‡ เจธเฉฐเจ–เฉ‡เจช เจฐเฉ‚เจช? เจ†เจ“ เจธเฉฐเจ–เฉ‡เจช เจตเจฟเฉฑเจš เจฆเฉฑเจธเฉ€เจ เจ•เจฟ เจ‡เจนเจจเจพเจ‚ เจธเจผเจฌเจฆเจพเจ‚ เจฆเจพ เจ•เฉ€ เจ…เจฐเจฅ เจนเฉˆ:

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

เจ…เจœเจฟเจนเจพ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ, เจธเจพเจฅเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ STUN เจ…เจคเฉ‡ เจŸเจฐเจจ เจธเจฐเจตเจฐเจพเจ‚ เจคเฉ‹เจ‚ เจชเฉเจฐเจพเจชเจค เจœเจพเจฃเจ•เจพเจฐเฉ€ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจจเจพเจฒ เจ‡เจธ เจฆเจพ เจ†เจฆเจพเจจ-เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจธเจฎเฉฑเจธเจฟเจ† เจ‡เจน เจนเฉˆ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจ•เฉ‹เจฒ เจ…เจœเฉ‡ เจคเฉฑเจ• เจธเจฟเฉฑเจงเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเฉฐเจšเจพเจฐ เจ•เจฐเจจ เจฆเฉ€ เจธเจฎเจฐเฉฑเจฅเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ‡เจธ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจ•เจฐเจจ เจฒเจˆ เจ‡เฉฑเจ• เจ†เจŠเจŸ-เจ†เจซ-เจฌเฉˆเจ‚เจก เจตเจฟเจงเฉ€ เจฎเฉŒเจœเฉ‚เจฆ เจนเฉ‹เจฃเฉ€ เจšเจพเจนเฉ€เจฆเฉ€ เจนเฉˆ: เจ‡เฉฑเจ• เจธเจฟเจ—เจจเจฒ เจธเจฐเจตเจฐเฅค

เจ‡เฉฑเจ• เจธเจฟเจ—เจจเจฒ เจธเจฐเจตเจฐ เจฌเจนเฉเจค เจธเจฐเจฒ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจธเจฆเจพ เจ‡เฉฑเจ•เฉ‹ เจ‡เฉฑเจ• เจ•เฉฐเจฎ เจนเฉˆเจ‚เจกเจธเจผเฉ‡เจ• เจชเฉœเจพเจ… เจตเจฟเฉฑเจš เจธเจพเจฅเฉ€เจ†เจ‚ เจตเจฟเจšเจ•เจพเจฐ เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจ…เฉฑเจ—เฉ‡ เจญเฉ‡เจœเจฃเจพ เจนเฉˆ (เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจนเฉ‡เจ เจพเจ‚ เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจฆเจฟเจ–เจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ)เฅค

Cheerp, WebRTC เจ…เจคเฉ‡ Firebase เจจเจพเจฒ C++ เจคเฉ‹เจ‚ เจตเฉˆเฉฑเจฌ 'เจคเฉ‡ เจฎเจฒเจŸเฉ€เจชเจฒเฉ‡เจ…เจฐ เจ—เฉ‡เจฎ เจจเฉ‚เฉฐ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจเจพ
เจธเจฐเจฒเฉ€เจ•เฉเจฐเจฟเจค WebRTC เจนเฉˆเจ‚เจกเจธเจผเฉ‡เจ• เจ•เฉเจฐเจฎ เจšเจฟเฉฑเจคเจฐ

Teeworlds เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฎเจพเจกเจฒ เจธเฉฐเจ–เฉ‡เจช เจœเจพเจฃเจ•เจพเจฐเฉ€

Teeworlds เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฌเจนเฉเจค เจธเจงเจพเจฐเจจ เจนเฉˆ:

  • เจ•เจฒเจพเจ‡เฉฐเจŸ เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจญเจพเจ— เจฆเฉ‹ เจตเฉฑเจ–-เจตเฉฑเจ– เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจนเจจเฅค
  • เจ•เจฒเจพเจ‡เฉฐเจŸ เจ•เจˆ เจธเจฐเจตเจฐเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเจพเจฒ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเจ•เฉ‡ เจ—เฉ‡เจฎ เจตเจฟเฉฑเจš เจฆเจพเจ–เจฒ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ, เจœเจฟเจจเฉเจนเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐ เจ‡เฉฑเจ• เจ‡เฉฑเจ• เจธเจฎเฉ‡เจ‚ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจ—เฉ‡เจฎ เจฆเฉ€ เจฎเฉ‡เจœเจผเจฌเจพเจจเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆเฅค
  • เจ—เฉ‡เจฎ เจตเจฟเฉฑเจš เจธเจพเจฐเจพ เจกเจพเจŸเจพ เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจธเจฐเจตเจฐ เจฆเฉเจ†เจฐเจพ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ.
  • เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจฎเจพเจธเจŸเจฐ เจธเจฐเจตเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจธเจพเจฐเฉ‡ เจœเจจเจคเจ• เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจ‡เจ•เฉฑเจ เฉ€ เจ•เจฐเจจ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจ—เฉ‡เจฎ เจ•เจฒเจพเจ‡เฉฐเจŸ เจตเจฟเฉฑเจš เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค

เจกเฉ‡เจŸเจพ เจเจ•เจธเจšเฉ‡เจ‚เจœ เจฒเจˆ WebRTC เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฒเจˆ เจงเฉฐเจจเจตเจพเจฆ, เจ…เจธเฉ€เจ‚ เจ—เฉ‡เจฎ เจฆเฉ‡ เจธเจฐเจตเจฐ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจจเฉ‚เฉฐ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเจฟเฉฑเจฅเฉ‡ เจ•เจฒเจพเจ‡เฉฐเจŸ เจธเจฅเจฟเจค เจนเฉˆเฅค เจ‡เจน เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจฎเฉŒเจ•เจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ ...

เจธเจฐเจตเจฐเจพเจ‚ เจคเฉ‹เจ‚ เจ›เฉเจŸเจ•เจพเจฐเจพ เจชเจพเจ“

เจธเจฐเจตเจฐ เจคเจฐเจ• เจฆเฉ€ เจ˜เจพเจŸ เจฆเจพ เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจซเจพเจ‡เจฆเจพ เจนเฉˆ: เจ…เจธเฉ€เจ‚ เจชเฉ‚เจฐเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ Github เจชเฉฐเจจเจฟเจ†เจ‚ 'เจคเฉ‡ เจœเจพเจ‚ เจ•เจฒเจพเจ‰เจกเจซเจฒเฉ‡เจ…เจฐ เจฆเฉ‡ เจชเจฟเฉฑเจ›เฉ‡ เจธเจพเจกเฉ‡ เจ†เจชเจฃเฉ‡ เจนเจพเจฐเจกเจตเฉ‡เจ…เจฐ 'เจคเฉ‡ เจธเจฅเจฟเจฐ เจธเจฎเจ—เจฐเฉ€ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจคเฉˆเจจเจพเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚, เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฎเฉเจซเจค เจตเจฟเฉฑเจš เจคเฉ‡เจœเจผ เจกเจพเจ‰เจจเจฒเฉ‹เจกเจธ เจ…เจคเฉ‡ เจ‰เฉฑเจš เจ…เจชเจŸเจพเจˆเจฎ เจจเฉ‚เฉฐ เจฏเจ•เฉ€เจจเฉ€ เจฌเจฃเจพเจ‡เจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ…เจธเจฒ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจ‰เจจเฉเจนเจพเจ‚ เจฌเจพเจฐเฉ‡ เจญเฉเฉฑเจฒ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚, เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจ…เจธเฉ€เจ‚ เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจค เจนเจพเจ‚ เจ…เจคเฉ‡ เจ–เฉ‡เจก เจชเฉเจฐเจธเจฟเฉฑเจง เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจ†เจงเฉเจจเจฟเจ• เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เฉ€.

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจธเจฟเจธเจŸเจฎ เจฆเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ, เจธเจพเจจเฉ‚เฉฐ เจ…เจœเฉ‡ เจตเฉ€ เจ‡เฉฑเจ• เจฌเจพเจนเจฐเฉ€ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเฉ€ เจชเจตเฉ‡เจ—เฉ€:

  • เจ‡เฉฑเจ• เจœเจพเจ‚ เจตเฉฑเจง STUN เจธเจฐเจตเจฐ: เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจšเฉเจฃเจจ เจฒเจˆ เจ•เจˆ เจฎเฉเจซเจค เจตเจฟเจ•เจฒเจช เจนเจจเฅค
  • เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ‡เฉฑเจ• เจŸเจฐเจจ เจธเจฐเจตเจฐ: เจ‡เฉฑเจฅเฉ‡ เจ•เฉ‹เจˆ เจฎเฉเจซเจผเจค เจตเจฟเจ•เจฒเจช เจจเจนเฉ€เจ‚ เจนเจจ, เจ‡เจธเจฒเจˆ เจ…เจธเฉ€เจ‚ เจœเจพเจ‚ เจคเจพเจ‚ เจ†เจชเจฃเจพ เจธเฉˆเจŸ เจ…เจช เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจœเจพเจ‚ เจธเฉ‡เจตเจพ เจฒเจˆ เจญเฉเจ—เจคเจพเจจ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจธเจฎเจพเจ‚ STUN เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจ•เจจเฉˆเจ•เจธเจผเจจ เจธเจฅเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ (เจ…เจคเฉ‡ เจธเจนเฉ€ p2p เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆ), เจชเจฐ เจ‡เฉฑเจ• เจซเจพเจฒเจฌเฉˆเจ• เจตเจฟเจ•เจฒเจช เจตเจœเฉ‹เจ‚ เจŸเจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค
  • เจธเจฟเจ—เจจเจฒเจฟเฉฐเจ— เจธเจฐเจตเจฐ: เจฆเฉ‚เจœเฉ‡ เจฆเฉ‹ เจชเจนเจฟเจฒเฉ‚เจ†เจ‚ เจฆเฉ‡ เจ‰เจฒเจŸ, เจธเจฟเจ—เจจเจฒเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจฎเจพเจจเจ•เฉ€เจ•เฉเจฐเจฟเจค เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจธเจฟเจ—เจจเจฒ เจธเจฐเจตเจฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ•เจฟเจธ เจฒเจˆ เจœเจผเจฟเฉฐเจฎเฉ‡เจตเจพเจฐ เจนเฉ‹เจตเฉ‡เจ—เจพ เจ‡เจน เจ•เฉเจ เจนเฉฑเจฆ เจคเฉฑเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ‡เฉฑเจ• เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจฅเฉ‹เฉœเฉเจนเฉ‡ เจœเจฟเจนเฉ‡ เจกเฉ‡เจŸเจพ เจฆเจพ เจ†เจฆเจพเจจ-เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจจเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆ.
  • Teeworlds Master Server: เจ‡เจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ‚เจœเฉ‡ เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉเจ†เจฐเจพ เจ†เจชเจฃเฉ€ เจนเฉ‹เจ‚เจฆ เจฆเจพ เจ‡เจธเจผเจคเจฟเจนเจพเจฐ เจฆเฉ‡เจฃ เจฒเจˆ เจ…เจคเฉ‡ เจ—เจพเจนเจ•เจพเจ‚ เจฆเฉเจ†เจฐเจพ เจœเจจเจคเจ• เจธเจฐเจตเจฐเจพเจ‚ เจจเฉ‚เฉฐ เจฒเฉฑเจญเจฃ เจฒเจˆ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เจน เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ (เจ—เจพเจนเจ• เจนเจฎเฉ‡เจธเจผเจพเจ‚ เจ‡เฉฑเจ• เจธเจฐเจตเจฐ เจจเจพเจฒ เจœเฉเฉœ เจธเจ•เจฆเฉ‡ เจนเจจ เจœเจฟเจธ เจฌเจพเจฐเฉ‡ เจ‰เจน เจนเฉฑเจฅเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเจจ), เจ‡เจน เจšเฉฐเจ—เจพ เจนเฉ‹เจตเฉ‡เจ—เจพ เจคเจพเจ‚ เจœเฉ‹ เจ–เจฟเจกเจพเจฐเฉ€ เจฌเฉ‡เจคเจฐเจคเฉ€เจฌ เจฒเฉ‹เจ•เจพเจ‚ เจจเจพเจฒ เจ–เฉ‡เจกเจพเจ‚ เจตเจฟเฉฑเจš เจนเจฟเฉฑเจธเจพ เจฒเฉˆ เจธเจ•เจฃเฅค

เจ…เจธเฉ€เจ‚ Google เจฆเฉ‡ เจฎเฉเจซเจค STUN เจธเจฐเจตเจฐเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจŸเจฐเจจ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจ–เฉเจฆ เจคเฉˆเจจเจพเจค เจ•เฉ€เจคเจพ เจนเฉˆเฅค

เจชเจฟเจ›เจฒเฉ‡ เจฆเฉ‹ เจฌเจฟเฉฐเจฆเฉ‚เจ†เจ‚ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจตเจฐเจคเฉ‡ เจซเจพเจ‡เจฐเจฌเฉ‡เจœ:

  • Teeworlds เจฎเจพเจธเจŸเจฐ เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจฌเจนเฉเจค เจนเฉ€ เจ…เจธเจพเจจเฉ€ เจจเจพเจฒ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ: เจนเจฐเฉ‡เจ• เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจธเจฐเจตเจฐ เจฆเฉ€ เจœเจพเจฃเจ•เจพเจฐเฉ€ (เจจเจพเจฎ, IP, เจจเจ•เจธเจผเจพ, เจฎเฉ‹เจก, ...) เจฐเฉฑเจ–เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจตเจธเจคเฉ‚เจ†เจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจšเฅค เจธเจฐเจตเจฐ เจ†เจชเจฃเฉ€ เจ–เฉเจฆ เจฆเฉ€ เจตเจธเจคเฉ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจ•เจพเจธเจผเจฟเจค เจ…เจคเฉ‡ เจ…เจชเจกเฉ‡เจŸ เจ•เจฐเจฆเฉ‡ เจนเจจ, เจ…เจคเฉ‡ เจ•เจฒเจพเจ‡เฉฐเจŸ เจชเฉ‚เจฐเฉ€ เจธเฉ‚เจšเฉ€ เจฒเฉˆเจ‚เจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจชเจฒเฉ‡เจ…เจฐ เจจเฉ‚เฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจจเฅค เจ…เจธเฉ€เจ‚ เจนเฉ‹เจฎ เจชเฉ‡เจœ 'เจคเฉ‡ เจธเฉ‚เจšเฉ€ เจจเฉ‚เฉฐ HTML เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจตเฉ€ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจคเจพเจ‚ เจœเฉ‹ เจ–เจฟเจกเจพเจฐเฉ€ เจธเจฟเจฐเจซเจผ เจธเจฐเจตเจฐ 'เจคเฉ‡ เจ•เจฒเจฟเฉฑเจ• เจ•เจฐ เจธเจ•เจฃ เจ…เจคเฉ‡ เจธเจฟเฉฑเจงเฉ‡ เจ—เฉ‡เจฎ 'เจคเฉ‡ เจฒเจฟเจœเจพเจ‡เจ† เจœเจพ เจธเจ•เฉ‡เฅค
  • เจธเจฟเจ—เจจเจฒเจฟเฉฐเจ— เจธเจพเจกเฉ‡ เจธเจพเจ•เจŸเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจจเจพเจฒ เจจเฉ‡เฉœเจฟเจ“เจ‚ เจœเฉเฉœเฉ€ เจนเฉ‹เจˆ เจนเฉˆ, เจ…เจ—เจฒเฉ‡ เจญเจพเจ— เจตเจฟเฉฑเจš เจตเจฐเจฃเจจ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

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 เจธเจงเจพเจฐเจจ เจ…เจคเฉ‡ Posix Sockets 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 เจ…เจธเจพเจˆเจจเจฎเฉˆเจ‚เจŸ

เจธเจพเจกเฉ‡ "เจจเฉˆเฉฑเจŸเจตเจฐเจ•" เจตเจฟเฉฑเจš เจจเฉ‹เจก เจ†เจˆเจกเฉ€ 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 DataChannel เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเจจเฅค

เจ…เจธเฉ€เจ‚ เจ…เจธเจฟเฉฑเจงเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเฉ€ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ bind()เจคเจพเจ‚ เจœเฉ‹ เจธเจฐเจตเจฐ เจ…เจ—เจฒเฉ‡ เจตเจฟเฉฑเจš เจฎเฉเฉœ เจœเฉเฉœ เจธเจ•เฉ‡ sendto() เจœเฉ‡เจ•เจฐ เจ‡เจน เจ•เจฟเจธเฉ‡ เจ•เจพเจฐเจจ เจ•เจฐเจ•เฉ‡ เจฌเฉฐเจฆ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจธเจฐเจตเจฐ เจจเฉ‚เฉฐ เจ•เจฒเจพเจ‡เฉฐเจŸ เจฆเฉ‡ เจ•เฉเจจเฉˆเจ•เจธเจผเจจ เจฌเจพเจฐเฉ‡ เจธเฉ‚เจšเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจ•เจฒเจพเจ‡เฉฐเจŸ เจซเจพเจ‡เจฐเจฌเฉ‡เจธ เจตเจฟเฉฑเจš เจธเจฐเจตเจฐ เจชเฉ‹เจฐเจŸ เจœเจพเจฃเจ•เจพเจฐเฉ€ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚ เจ†เจชเจฃเฉ€ SDP เจชเฉ‡เจธเจผเจ•เจธเจผ เจฒเจฟเจ–เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจ‰เฉฑเจฅเฉ‡ เจ‡เจธเจฆเฉ‡ เจœเจตเจพเจฌ เจจเจพเจฒ เจœเจตเจพเจฌ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจนเฉ‡เจ เจพเจ‚ เจฆเจฟเฉฑเจคเจพ เจšเจฟเฉฑเจคเจฐ เจธเจพเจ•เจŸ เจธเจ•เฉ€เจฎ เจฒเจˆ เจธเฉฐเจฆเฉ‡เจธเจผ เจชเฉเจฐเจตเจพเจน เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจฃ เจ…เจคเฉ‡ เจ•เจฒเจพเจ‡เฉฐเจŸ เจคเฉ‹เจ‚ เจธเจฐเจตเจฐ เจคเฉฑเจ• เจชเจนเจฟเจฒเฉ‡ เจธเฉฐเจฆเฉ‡เจธเจผ เจฆเฉ‡ เจชเฉเจฐเจธเจพเจฐเจฃ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ:

Cheerp, WebRTC เจ…เจคเฉ‡ Firebase เจจเจพเจฒ C++ เจคเฉ‹เจ‚ เจตเฉˆเฉฑเจฌ 'เจคเฉ‡ เจฎเจฒเจŸเฉ€เจชเจฒเฉ‡เจ…เจฐ เจ—เฉ‡เจฎ เจจเฉ‚เฉฐ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจเจพ
เจ•เจฒเจพเจ‡เฉฐเจŸ เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจตเจฟเจšเจ•เจพเจฐ เจ•เจจเฉˆเจ•เจธเจผเจจ เจชเฉœเจพเจ… เจฆเจพ เจชเฉ‚เจฐเจพ เจšเจฟเฉฑเจคเจฐ

เจธเจฟเฉฑเจŸเจพ

เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจจเฉ‚เฉฐ เจนเฉเจฃ เจคเฉฑเจ• เจชเฉœเฉเจนเจฟเจ† เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจธเจผเจพเจ‡เจฆ เจธเจฟเจงเจพเจ‚เจค เจจเฉ‚เฉฐ เจ•เจพเจฐเจตเจพเจˆ เจตเจฟเฉฑเจš เจฆเฉ‡เจ–เจฃ เจตเจฟเฉฑเจš เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹เฅค 'เจคเฉ‡ เจ–เฉ‡เจก เจ–เฉ‡เจกเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ teeworlds.leaningtech.com, เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ‹!


เจธเจพเจฅเฉ€เจ†เจ‚ เจตเจฟเจšเจ•เจพเจฐ เจฆเฉ‹เจธเจคเจพเจจเจพ เจฎเฉˆเจš

เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจ•เฉ‹เจก เจฎเฉเจซเจผเจค เจตเจฟเฉฑเจš เจ‰เจชเจฒเจฌเจง เจนเฉˆ GitHub. 'เจคเฉ‡ เจธเจพเจกเฉ‡ เจšเฉˆเจจเจฒ 'เจคเฉ‡ เจ—เฉฑเจฒเจฌเจพเจค เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเฉ‹เจตเฉ‹ เจœเฉ€เจŸเจฐ!

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹