เจเจฟเจธเฉ เจคเจฐเฉเจนเจพเจ เจตเจฟเฉฑเจ
เจ เฉฑเจ เจ เจธเฉเจ WebRTC เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐเจพเจเจเฉเฅค
เจตเฉเฉฑเจฌ เจฐเฉเจ เจฒ-เจเจพเจเจฎ เจเจฎเจฟเจเจจเฉเจเฉเจธเจผเจจ (WebRTC) เจเฉฑเจ เจธเจฟเฉฐเจเจฒ เจชเฉเจฐเฉเจเฉเจเฉเจฒ เจจเจนเฉเจ เจนเฉ, เจเจน เจฎเจฟเจเจฐเจพเจ, เจชเฉเจฐเฉเจเฉเจเฉเจฒเจพเจ เจ เจคเฉ JavaScript API เจฆเจพ เจเฉฑเจ เจชเฉเจฐเจพ เจธเฉฐเจเฉเจฐเจนเจฟ เจนเฉ เจเฉ เจเจเฉฑเจ เฉ เจชเฉเจ เจฐ-เจเฉ-เจชเฉเจ เจฐ เจฐเฉเจ เจฒ-เจเจพเจเจฎ เจตเฉเจกเฉเจ-เจเจกเฉเจ เจธเฉฐเจเจพเจฐ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเฉ เจนเจจ, เจ เจคเฉ เจเจฟเจธเฉ เจตเฉ เจเฉเจฐเจพเจเจธเจซเจฐ เจเจฐเจจ เจฒเจ เจตเฉ เจตเจฐเจคเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจฌเจพเจเจจเจฐเฉ เจกเจพเจเจพ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจฌเฉเจฐเจพเจเจเจผเจฐ เจธเจพเจฅเฉเจเจ เจตเจเฉเจ เจเฉฐเจฎ เจเจฐเจฆเฉ เจนเจจ, เจชเจฐ เจเจน เจเฉฑเจ เจฎเฉเจฌเจพเจเจฒ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจตเฉ เจนเฉ เจธเจเจฆเจพ เจนเฉ, เจเจฆเจพเจนเจฐเจจ เจฒเจเฅค เจเจพเจนเจเจพเจ เจตเจฟเจเจเจพเจฐ p2p เจธเฉฐเจเจพเจฐ เจจเฉเฉฐ เจธเฉฐเจเจ เจฟเจค เจเจฐเจจ เจฒเจ, เจตเฉฑเจ-เจตเฉฑเจ เจเจฟเจธเจฎเจพเจ เจฆเฉ เจตเฉเจกเฉเจ เจ เจคเฉ เจเจกเฉเจ เจเจจเจเฉเจกเจฟเฉฐเจ เจฒเจ เจฌเฉเจฐเจพเจเจเจผเจฐ เจธเจฎเจฐเจฅเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ, เจเจ เจคเจฐเฉเจนเจพเจ เจฆเฉ เจจเฉเฉฑเจเจตเจฐเจ เจชเฉเจฐเฉเจเฉเจเฉเจฒ เจฒเจ เจธเจฎเจฐเจฅเจจ, เจฌเฉเจฐเจพเจเจเจผเจฐ (OS เจฒเฉเจ เจฐเจพเจ เจฐเจพเจนเฉเจ) เจจเจพเจฒ เจนเจพเจฐเจกเจตเฉเจ เจฐ เจฆเฉ เจเจชเจธเฉ เจคเจพเจฒเจฎเฉเจฒ เจจเฉเฉฐ เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจฃ เจฒเจ: เจตเฉเจฌเจเฉเจฎ, เจธเจพเจเจเจก เจเจพเจฐเจกเฅค เจกเจฟเจตเฉเจฒเจชเจฐ เจฆเฉ เจธเจนเฉเจฒเจค เจฒเจ เจเจพเจตเจพ เจธเจเฉเจฐเจฟเจชเจ API เจเจฌเจธเจเจฐเฉเจเจธเจผเจจ เจฆเฉ เจชเจฟเฉฑเจเฉ เจเฉเจเจจเจพเจฒเฉเจเฉ เจฆเจพ เจเจน เจธเจพเจฐเจพ เจนเฉเจเจชเฉเจ เจฒเฉเจเจฟเจ เจนเฉเจเจ เจนเฉเฅค
เจเจน เจธเจญ เจคเจฟเฉฐเจจ APIs เจคเฉฑเจ เจเจฌเจฒเจฆเจพ เจนเฉ:
-
MediaStream API - เจชเจฟเจเจฒเฉ เจตเจพเจฐ เจคเฉเฉเจฟเจ, เจ เฉฑเจ เจฎเฉเจ เจเจธ เจฌเจพเจฐเฉ เจฅเฉเฉเจพ เจนเฉเจฐ เจฒเจฟเจเจพเจเจเจพ. เจนเจพเจฐเจกเจตเฉเจ เจฐ เจคเฉเจ เจตเฉเจกเฉเจ / เจเจกเฉเจ เจธเจเฉเจฐเฉเจฎ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ เจธเฉเจตเจพ เจเจฐเจฆเจพ เจนเฉ -
RTCPeerConnection - เจฆเฉ เจเจพเจนเจเจพเจ เจตเจฟเจเจเจพเจฐ เจธเฉฐเจเจพเจฐ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉ (p2p) -
RTCDataChannel - เจฆเฉ เจเจพเจนเจเจพเจ เจตเจฟเจเจเจพเจฐ เจเจชเจนเฉเจฆเจฐเฉ เจกเฉเจเจพ เจจเฉเฉฐ เจเฉเจฐเจพเจเจธเจซเจฐ เจเจฐเจจ เจฒเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ
เจชเฉเจฐเจธเจพเจฐเจฃ เจฒเจ เจเจกเฉเจ เจ เจคเฉ เจตเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎเจพเจ เจจเฉเฉฐ เจคเจฟเจเจฐ เจเจฐเจจเจพ
เจเจน เจธเจญ เจตเฉเจฌเจเฉเจฎ เจ เจคเฉ เจฎเจพเจเจเฉเจฐเฉเจซเฉเจจ เจฎเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎ เจจเฉเฉฐ "เจเฉเจชเจเจฐ เจเจฐเจจ" เจจเจพเจฒ เจธเจผเฉเจฐเฉ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค เจฌเฉเจธเจผเฉฑเจ, เจเฉฑเจเฉเจเจ เจธเจเฉเจฐเฉเจฎเจพเจ เจเฉเจฒเฉเจเจพเจจเจซเจฐเฉฐเจธ เจฆเฉ เจเจฏเฉเจเจจ เจฒเจ เจขเฉเจเจตเฉเจ เจจเจนเฉเจ เจนเจจ, เจนเจฐเฉเจ เจธเจเฉเจฐเฉเจฎ 'เจคเฉ เจเจพเจฐเจตเจพเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ: เจเฉเจฃเจตเฉฑเจคเจพ เจตเจฟเฉฑเจ เจธเฉเจงเจพเจฐ เจเจฐเฉ, เจตเฉเจกเฉเจ เจจเจพเจฒ เจเจกเฉเจ เจจเฉเฉฐ เจธเจฎเจเจพเจฒเฉ เจฌเจฃเจพเจ, เจตเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎ เจตเจฟเฉฑเจ เจธเจฎเจเจพเจฒเฉเจเจฐเจจ เจเจฟเฉฐเจจเฉเจน เจฐเฉฑเจเฉ, เจ เจคเฉ เจเฉเจจเจฒ เจฆเฉ เจฒเจเจพเจคเจพเจฐ เจฌเจฆเจฒ เจฐเจนเฉ เจฌเฉเจเจกเจตเจฟเจกเจฅ เจฆเฉ เจ เจจเฉเจธเจพเจฐเฉ เจฌเจฟเฉฑเจเจฐเฉเจ เจจเฉเฉฐ เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเฅค . เจฌเฉเจฐเจพเจเจเจผเจฐ เจเจธ เจธเจญ เจฆเจพ เจงเจฟเจเจจ เจฐเฉฑเจเจฆเจพ เจนเฉ, เจกเจฟเจตเฉเจฒเจชเจฐ เจจเฉเฉฐ เจฎเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎเจพเจ เจฒเจ เจเจจเจเฉเจกเจฟเฉฐเจ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจ เจฌเจพเจฐเฉ เจเจฟเฉฐเจคเจพ เจเจฐเจจ เจฆเฉ เจตเฉ เจฒเฉเฉ เจจเจนเฉเจ เจนเฉเฅค เจเฉฑเจ เจเจงเฉเจจเจฟเจ เจฌเฉเจฐเจพเจเจเจผเจฐ เจฆเฉ เจ เฉฐเจฆเจฐ, เจเฉเจชเจเจฐเจฟเฉฐเจ, เจเฉเจฃเจตเฉฑเจคเจพ เจตเจฟเฉฑเจ เจธเฉเจงเจพเจฐ (เจงเฉเจจเฉ เจคเฉเจ เจเฉเฉฐเจ เจ เจคเฉ เจธเจผเฉเจฐ เจจเฉเฉฐ เจนเจเจพเจ, เจคเจธเจตเฉเจฐ เจตเจฟเฉฑเจ เจธเฉเจงเจพเจฐ เจเจฐเฉ), เจตเฉเจกเฉเจ เจ เจคเฉ เจเจกเฉเจ เจเจจเจเฉเจกเจฟเฉฐเจ เจฒเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจธเจพเจซเจเจตเฉเจ เจฐ เจฒเฉเจ เจฐ เจนเจจเฅค เจฒเฉเจ เจฐ เจธเจเฉเจฎ เจจเฉเฉฐ เจ เฉฐเจเฉเจฐ เจตเจฟเฉฑเจ เจฆเจฟเจเจพเจเจ เจเจฟเจ เจนเฉเฅค 1:
เจเฉเจฒ. 1. เจฌเฉเจฐเจพเจเจเจผเจฐ เจตเจฟเฉฑเจ เจเจกเฉเจ เจ เจคเฉ เจตเฉเจกเฉเจ เจชเฉเจฐเฉเจธเฉเจธเจฟเฉฐเจ เจฆเฉเจเจ เจชเจฐเจคเจพเจ
เจธเจพเจฐเฉ เจชเฉเจฐเฉเจธเฉเจธเจฟเฉฐเจ เจธเจฟเฉฑเจงเฉ เจฌเฉเจฐเจพเจเจเจผเจฐ เจตเจฟเฉฑเจ เจนเฉเฉฐเจฆเฉ เจนเฉ, เจเฉเจ เจตเจพเจงเฉ เจจเจนเฉเจเฅค เจเฉเจ เจชเจฒเฉฑเจเจเจจ เจฆเฉ เจฒเฉเฉ เจจเจนเฉเจเฅค เจนเจพเจฒเจพเจเจเจฟ, 2020 เจฒเจ เจเฉเจเจผเจพเจ เจ
เจเฉ เจตเฉ เจเฉฐเจจเฉเจเจ เจเฉเจฒเจพเจฌเฉ เจจเจนเฉเจ เจนเจจ. เจ
เจเจฟเจนเฉ เจฌเฉเจฐเจพเจเจเจผเจฐ เจนเจจ เจเฉ เจ
เจเฉ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจธเจฎเจฐเจฅเจจ เจจเจนเฉเจ เจเจฐเจฆเฉ เจนเจจ
เจคเฉเจธเฉเจ เจชเฉเจฐเจพเจชเจค เจเฉเจคเฉเจเจ เจธเจเฉเจฐเฉเจฎเจพเจ เจฆเฉ เจจเจพเจฒ เจฌเจนเฉเจค เจฆเจฟเจฒเจเจธเจช เจเฉเจเจผเจพเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ: เจคเฉเจธเฉเจ เจเจฒเฉเจจ เจเจฐ เจธเจเจฆเฉ เจนเฉ, เจตเฉเจกเฉเจ เจฐเฉเจเจผเฉเจฒเจฟเจเจธเจผเจจ เจจเฉเฉฐ เจฌเจฆเจฒ เจธเจเจฆเฉ เจนเฉ, เจเจกเฉเจ เจเฉเจฃเจตเฉฑเจคเจพ เจตเจฟเฉฑเจ เจนเฉเจฐเจพเจซเฉเจฐเฉ เจเจฐ เจธเจเจฆเฉ เจนเฉ, เจคเฉเจธเฉเจ เจฎเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎ เจธเจเฉเจฐเฉเจฎ เจจเฉเฉฐ เจฒเฉ เจ เจคเฉ "เจนเฉเฉฑเจ" เจเจฐ เจธเจเจฆเฉ เจนเฉ html เจชเฉฐเจจเฉ 'เจคเฉ เจเจชเจฃเฉ เจเจช เจจเฉเฉฐ เจเฉเจ เจเจฐเฉ เจ เจคเฉ เจฆเฉเจเฉเฅค เจเจพเจ เจคเฉเจธเฉเจ เจเฉเจจเจตเจธ 'เจคเฉ เจเฉฑเจ เจธเจเฉเจฐเฉเจฎ เจฌเจฃเจพ เจธเจเจฆเฉ เจนเฉ, เจ เจคเฉ WebGL เจเจพเจ CSS3 เจธเฉเฉฑเจ เจเจฐ เจธเจเจฆเฉ เจนเฉ, เจ เจคเฉ เจตเฉเจกเฉเจ 'เจคเฉ เจตเฉฑเจ-เจตเฉฑเจ เจซเจฟเจฒเจเจฐ เจฒเจเจพ เจธเจเจฆเฉ เจนเฉ, เจชเฉเจฐเฉเจธเฉเจธ เจเฉเจคเฉ เจตเฉเจกเฉเจ เจจเฉเฉฐ เจเฉเจจเจตเจธ เจคเฉเจ เจเฉเจชเจเจฐ เจเจฐ เจธเจเจฆเฉ เจนเฉ เจ เจคเฉ เจซเจฟเจฐ เจเจธเจจเฉเฉฐ เจจเฉเฉฑเจเจตเจฐเจ 'เจคเฉ เจธเจฐเจตเจฐ 'เจคเฉ เจญเฉเจ เจธเจเจฆเฉ เจนเฉ, เจเฉเจฐเจพเจเจธเจเฉเจก เจเจฐ เจธเจเจฆเฉ เจนเฉ เจ เจคเฉ เจนเจฐ เจเจฟเจธเฉ เจจเฉเฉฐ เจชเฉเจฐเจเจพเจธเจผเจฟเจค เจเจฐ เจธเจเจฆเฉ เจนเฉ (เจนเฉเจฒเฉ เจฌเจฟเจเฉ เจฒเจพเจเจต, เจเจตเจฟเจ เจ เจคเฉ เจนเฉเจฐ). เจเฉฑเจฅเฉ เจฎเฉเจ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจจเจนเฉเจ เจเจฐเจพเจเจเจพ เจเจฟ เจ เจเจฟเจนเฉเจเจ เจเฉเจเจผเจพเจ เจเจฟเจตเฉเจ เจเฉเจคเฉเจเจ เจเจพเจเจฆเฉเจเจ เจนเจจ, เจฎเฉเจ เจตเฉเฉฑเจฌ 'เจคเฉ เจฎเจฟเจฒเฉเจเจ เจเฉเจ เจเจฆเจพเจนเจฐเจฃเจพเจ เจฆเฉเจตเจพเจเจเจพ:
RTCPeerConnection
เจเจธ เจฒเจ เจ
เจธเฉเจ เจฌเจฟเฉฐเจฆเฉ 'เจคเฉ เจเจ, เจชเจฐ เจ
เจธเจฒ เจตเจฟเฉฑเจ เจตเฉเจกเฉเจ เจจเฉเฉฐ เจเจฟเจธเฉ เจนเฉเจฐ เจเจชเจญเฉเจเจคเจพ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจเฉเจฐเจพเจเจธเจซเจฐ เจเจฐเจจเจพ เจนเฉ? เจธเจพเจนเจฎเจฃเฉ เจเจเจเจฆเจพ เจนเฉ
const peerConnection = new RTCPeerConnection({
iceServers: [{
urls: 'stun:stun.l.google.com:19302'
}]
});
เจ เจธเฉเจ iceServers เจจเฉเฉฐ เจตเจฟเจเจฒเจชเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจจเจฟเจธเจผเจเจฟเจค เจเจฐเจฆเฉ เจนเจพเจ - เจเจน เจเฉฑเจ เจธเจฐเจตเจฐ เจนเฉ เจเฉ NAT'om เจฆเฉ เจชเจฟเฉฑเจเฉ เจฆเฉ เจฌเฉเจฐเจพเจเจเจผเจฐเจพเจ เจตเจฟเจเจเจพเจฐ เจเฉฑเจ เจเฉเจจเฉเจเจธเจผเจจ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจ เจตเจฟเฉฑเจ เจฎเจฆเจฆ เจเจฐเจฆเจพ เจนเฉเฅค เจญเจพเจต, เจธเจฎเฉฑเจธเจฟเจ เจเฉฑเจฅเฉ เจนเฉฑเจฒ เจนเฉ เจเจ เจนเฉ: เจตเจพเจฐเจคเจพเจเจพเจฐ เจฆเจพ เจเจเจชเฉ เจเจฟเจตเฉเจ เจชเจคเจพ เจฒเจเจพเจเจ เจเจพเจตเฉ เจเฉ เจเจน เจเจชเจฃเฉ เจชเฉเจฐเจฆเจพเจคเจพ เจฆเฉ NAT เจฆเฉ เจชเจฟเฉฑเจเฉ เจนเฉ? ICE เจชเฉเจฐเฉเจเฉเจเฉเจฒ เจฌเจเจพเจ เจฒเจ เจเจเจเจฆเจพ เจนเฉ, เจตเจพเจธเจคเจต เจตเจฟเฉฑเจ, ICE เจฌเจฟเจฒเจเฉเจฒ เจตเฉ WebRTC 'เจคเฉ เจฒเจพเจเฉ เจจเจนเฉเจ เจนเฉเฉฐเจฆเจพ, เจชเจฐ เจฌเจพเจ เจฆ เจตเจฟเฉฑเจ เจเจธ เจฌเจพเจฐเฉ เจนเฉเจฐเฅค
เจชเจนเจฟเจฒเจพเจ, เจธเจพเจจเฉเฉฐ เจฏเฉเจเจผเจฐเจฎเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎเจพเจ เจฎเจฟเจฒเฉเจเจ:
navigator.mediaDevices.getUserMedia({ video: true, audio: true }).then(stream => {
// Usermedia-ะฟะพัะพะบะธ, ะพะฑััะฝะพ ััะพ ะฒะธะดะตะพ ะธ ะฐัะดะธะพ
const tracks = stream.getTracks();
for (const track of tracks) {
// ะบะฐะถะดัะน ััะตะบ ะฟัะธัะพะตะดะธะฝัะตะผ ะบ peerConnection
peerConnection.addTrack(track);
}
}).catch(console.error);
เจ เฉฑเจเฉ, เจชเฉเจ เจฐ เจเจจเฉเจเจธเจผเจจ 'เจคเฉ เจเฉฑเจฒเจฌเจพเจค เจฒเจ เจฒเฉเฉเฉเจเจฆเฉ เจเจเจจเจพ เจธเจผเฉเจฐเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ, เจเจฟเจธ เจฆเฉ เจนเฉเจเจกเจฒเจฐ เจตเจฟเฉฑเจ เจธเจพเจจเฉเฉฐ เจเฉฑเจ เจชเฉเจธเจผเจเจธเจผ เจฌเจฃเจพเจเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเฉ (SDP - เจธเฉเจธเจผเจจ เจตเจฐเจฃเจจ เจชเฉเจฐเฉเจเฉเจเฉเจฒ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ) เจ เจคเฉ เจเจธเจจเฉเฉฐ setLocalDescription เจตเจฟเจงเฉ เจฐเจพเจนเฉเจ เจชเฉเจ เจฐ เจเจจเฉเจเจธเจผเจจ เจจเฉเฉฐ เจธเฉเจเจชเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค SDP เจฌเจพเจฐเฉ - เจเจน เจเฉ เจนเฉ เจ เจคเฉ เจชเฉเจธเจผเจเจธเจผ เจ เจคเฉ เจเจตเจพเจฌ เจฆเฉ เจซเจพเจฐเจฎเฉเจเจพเจ เจฌเจพเจฐเฉ - เจ เจธเฉเจ เจ เฉฑเจเฉ เจเฉฑเจฒ เจเจฐเจพเจเจเฉเฅค
LocalDescription peerConnection เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจฌเฉเจฐเจพเจเจเจผเจฐ เจเจเจธ เจเจฎเฉเจฆเจตเจพเจฐเจพเจ เจจเฉเฉฐ "เจเจเฉฑเจ เจพ" เจเจฐเจฆเจพ เจนเฉ, เจฏเจพเจจเฉ NAT เจฐเจพเจนเฉเจ เจธเฉฐเจเจพเจฐ เจเจฐเจจ เจฆเฉ เจเจ เจคเจฐเฉเจเฉ เจฒเฉฑเจญเจฆเจพ เจนเฉเฅค เจเจจเจฟเจธเจเฉเจฆเจฐเจฟเฉฐเจเจธเจเฉเจเจเฉเจเจ เจเจเจจเจพ เจจเฉเฉฐ เจ เฉฑเจ เจฒเฉฑเจ เจเจเฅค onicegatheringstatechange เจนเฉเจเจกเจฒเจฐ เจตเจฟเฉฑเจ, เจ เจธเฉเจ เจธเจพเจฅเฉเจเจ เจตเจฟเจเจเจพเจฐ เจธเฉเจธเจผเจจ เจตเจฐเจฃเจจ เจฆเจพ เจเจฆเจพเจจ-เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจ เจฒเจ webrtc-signaling-server เจธเจเฉเจฐเฉเจฎ เจจเจพเจฒ เจเฉฑเจ เจเจจเฉเจเจธเจผเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเฉ เจนเจพเจ:
peerConnection.oniceconnectionstatechange = (event) => {
console.log('Connection state: ', peerConnection.iceConnectionState);
if (peerConnection.iceConnectionState === 'connected') {
// ะะพะถะตะผ ะฐะบัะธะฒะธัะพะฒะฐัั ะบะฝะพะฟะบั Start broadcast
setBroadcasting(true);
setBroadcastingBtnActive(true);
}
};
// ะกะพะฑััะธะต ััะฐะฑะฐััะฒะฐะตั ััะฐะทั, ะบะฐะบ ัะพะปัะบะพ ะดะพะฑะฐะฒะธะปัั ะผะตะดะฐะธะฐะฟะพัะพะบ ะฒ peerConnection
peerConnection.onnegotiationneeded = (event) => {
// ะกะพะทะดะฐะตะผ ะธ ะฝะฐะทะฝะฐัะฐะตะผ SDP offer
peerConnection.createOffer().
then((offer) => peerConnection.setLocalDescription(offer)).
catch(console.error);
};
// ะกะพะฑััะธะต ััะฐะฑะฐััะฒะฐะตั ะบะฐะถะดัะน ัะฐะท, ะบะฐะบ ะฟะพัะฒะปัะตััั ICE ะบะฐะฝะดะธะดะฐั
peerConnection.onicegatheringstatechange = (ev) => {
let connection = ev.target;
// Now we can activate broadcast button
if (connection.iceGatheringState === 'complete') {
let delay = 50;
let tries = 0;
let maxTries = 3;
let timerId = setTimeout(function allowStreaming() {
if (isOnline) {
setBroadcastingBtnActive(true);
return;
}
if (tries < maxTries) {
tries += 1;
delay *= 2;
timerId = setTimeout(allowStreaming, delay);
} else {
// TODO: show user notification
console.error("Can't connect to server");
alert("Can't connect to server");
}
}, delay);
}
};
webrtc-signaling-server เจเฉฑเจ เจธเจฐเจตเจฐ เจนเฉ เจเฉ เจฆเฉ เจธเจพเจฅเฉเจเจ เจตเจฟเจเจเจพเจฐ เจธเฉเจธเจผเจจ เจฆเฉ เจตเจฐเจฃเจจ เจฆเจพ เจเจฆเจพเจจ-เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจ เจฒเจ เจฒเฉเฉเฉเจเจฆเจพ เจนเฉ, เจเจน เจเจฟเจธเฉ เจตเฉ PL 'เจคเฉ เจธเจญ เจคเฉเจ เจธเจฐเจฒ เจตเฉเจฌเจธเจพเจเฉเจ เจเจพเจ xhr-เจธเจฐเจตเจฐ เจนเฉ เจธเจเจฆเจพ เจนเฉเฅค เจเจธเจฆเจพ เจเฉฐเจฎ เจธเจงเจพเจฐเจจ เจนเฉ: เจเฉฑเจ เจชเฉเจ เจฐ เจคเฉเจ เจธเฉเจธเจผเจจ เจฆเฉ เจตเฉเจฐเจตเฉ เจจเฉเฉฐ เจธเจตเฉเจเจพเจฐ เจเจฐเจจเจพ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจฆเฉเจเฉ เจตเจฟเฉฑเจ เจเฉเจฐเจพเจเจธเจซเจฐ เจเจฐเจจเจพเฅค
เจธเฉเจธเจผเจจ เจฆเฉ เจตเฉเจฐเจตเจฟเจเจ เจฆเฉ เจเจฆเจพเจจ-เจชเฉเจฐเจฆเจพเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจฆเฉเจตเฉเจ เจงเจฟเจฐเจพเจ เจตเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจธเจพเจฐเจฟเจค เจเจฐเจจ เจ เจคเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ เจคเจฟเจเจฐ เจนเจจ, เจเจฟเจธ เจชเจพเจธเฉ เจตเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎ เจชเฉเจฐเจพเจชเจค เจนเฉเฉฐเจฆเฉ เจนเฉ, เจเจจเจเจฐเฉเจ เจเจตเฉเจเจ เจจเฉเฉฐ เจชเฉเจ เจฐ เจเจจเฉเจเจธเจผเจจ 'เจคเฉ เจเจพเจฒเฉ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจเจฟเจธ เจฆเฉ เจนเฉเจเจกเจฒเจฐ เจตเจฟเฉฑเจ, เจชเฉเจฐเจพเจชเจค เจเฉเจคเฉ เจเจฐเฉเจเจพเจ เจจเฉเฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจ เจคเฉ เจเจชเจฃเฉ เจฎเจจเจชเจธเฉฐเจฆ เจตเจพเจฐเจคเจพเจเจพเจฐ เจจเฉเฉฐ เจฆเฉเจเฉเฅค เจนเฉเจฐ เจฅเจฟเจเจฐเฉ เจ เจคเฉ เจตเฉเจฐเจตเฉ.
เจฒเจฟเฉฐเจ เจ เจคเฉ เจธเจพเจนเจฟเจค:
เจ เจเจฒเฉ เจนเจฟเฉฑเจธเฉ เจตเจฟเฉฑเจ, เจฎเฉเจ เจฅเจฟเจเจฐเฉ เจฆเจพ เจฅเฉเฉเจพ เจนเฉเจฐ เจนเจฟเฉฑเจธเจพ เจฆเฉเจฃเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจนเจพเจ เจ เจคเฉ เจ เจญเจฟเจเจธ เจตเจฟเฉฑเจ เจชเฉเจเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจธเจฐเจตเจฐ 'เจคเฉ เจเฉฑเจ เจตเฉเจกเฉเจ เจธเจเฉเจฐเฉเจฎ เจฆเฉ เจฐเจฟเจธเฉเจชเจธเจผเจจ เจ เจคเฉ เจชเฉเจฐเฉเจธเฉเจธเจฟเฉฐเจ เจฆเจพ เจตเจฟเจธเจผเจฒเฉเจธเจผเจฃ เจเจฐเจจ เจฒเจ, เจฌเฉเจฐเจพเจเจเจผเจฐ เจตเจฟเฉฑเจ เจฆเจฐเจธเจผเจเจพเจ เจจเฉเฉฐ เจ เจเจฒเฉ เจชเฉเจฐเจธเจพเจฐเจฃ เจฒเจ ffmpeg เจฆเฉเจเจฐเจพ HLS เจจเฉเฉฐ เจเฉเจฐเจพเจเจธเจเฉเจกเจฟเฉฐเจ เจเจฐเจจเจพ.
เจฌเฉเจเฉเจจ เจฒเจ:
เจธเจฐเฉเจค: www.habr.com