RTCPeerConnection()
Baseline
åºãå©ç¨å¯è½
*
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2017å¹´9æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
* ãã®æ©è½ã®ä¸é¨ã¯ã対å¿ã¬ãã«ãç°ãªãå ´åãããã¾ãã
RTCPeerConnection() ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ããã¼ã«ã«ç«¯æ«ã¨ãªã¢ã¼ã端æ«éã®æ¥ç¶ãè¡¨ãæ°ãã使ããã RTCPeerConnection ãè¿ãã¾ãã
æ§æ
new RTCPeerConnection();
new RTCPeerConnection(configuration);
弿°
configurationçç¥å¯-
æ°ããæ¥ç¶ãæ§æããããã®ãªãã·ã§ã³ãæä¾ãããªãã¸ã§ã¯ãã§ãã
bundlePolicyçç¥å¯-
ãªã¢ã¼ãã®ç¸æã SDP BUNDLE è¦æ ¼ã«å¯¾å¿ãã¦ããªãå ´åã«ãåè£ã®äº¤æ¸ãå¦çããæ¹æ³ãæå®ãã¾ãã ãªã¢ã¼ãã®ã¨ã³ããã¤ã³ãã BUNDLE ã«å¯¾å¿ãã¦ããå ´åã使ç¨ããããªã·ã¼ã«é¢ãã ãã交æ¸ã®å®äºæã«ãã¹ã¦ã®ã¡ãã£ã¢ãã©ãã¯ã¨ãã¼ã¿ãã£ãã«ã 1 ã¤ã®ãã©ã³ã¹ãã¼ãã«ãã³ãã«ãããæåã«ä½æãããä½åãªãã©ã³ã¹ãã¼ãã¯ãã®æç¹ã§éãããã¾ãã
æè¡çã«ã¯ã BUNDLE 㯠2 ã¤ã®ãã¢éã®ãã¹ã¦ã®ã¡ãã£ã¢ããã¼ãåä¸ã® 5 ã¿ãã«ã«æµããã¨ãã§ãã¾ãã ã¤ã¾ãã䏿¹ã®ãã¢ã®åä¸ã® IP ã¨ãã¼ãããããã䏿¹ã®ãã¢ã®åä¸ã® IP ã¨ãã¼ãã¸ãåããã©ã³ã¹ãã¼ããããã³ã«ã使ç¨ãã¦æµãã¾ãã
ããã¯ä»¥ä¸ã®æååå¤ã®ããããã§ãªããã°ãªãããããã§ãªãå ´åã¯
balancedã¨ã¿ãªããã¾ããbalanced-
ICE ã¨ã¼ã¸ã§ã³ãã¯ãæåã«è¿½å ãããã³ã³ãã³ãã®ç¨®é¡ï¼é³å£°ãæ åããã¼ã¿ãã£ãã«ï¼ãã¨ã« 1 ã¤ã®
RTCDtlsTransportã使ãã¾ãã ãªã¢ã¼ãã¨ã³ããã¤ã³ããBUNDLEã«å¯¾å¿ãã¦ããªãå ´åããããã® DTLS ãã©ã³ã¹ãã¼ãã®ããããã¯ã 1 ã¤ã®ç¨®é¡ã®ãã¼ã¿ã«å¯¾ãããã¹ã¦ã®éä¿¡ãå¦çãã¾ãã max-compat-
ICE ã¨ã¼ã¸ã§ã³ãã¯ãæåã«ã¡ãã£ã¢ãã©ãã¯ãã¨ã« 1 ã¤ã®
RTCDtlsTransportã使ãããã¼ã¿ãã£ã³ãã«ç¨ã«å¥ã®ãã®ã使ãã¾ãã ãªã¢ã¼ãã¨ã³ããã¤ã³ãã BUNDLE ã«å¯¾å¿ãã¦ããªãå ´åããã¹ã¦ã¯ãããã®å¥ã ã® DTLS ãã©ã³ã¹ãã¼ãä¸ã§äº¤æ¸ããã¾ãã max-bundle-
ICE ã¨ã¼ã¸ã§ã³ãã¯æåã
RTCDtlsTransportã®ãã¹ã¦ã®ãã¼ã¿ãéã¶ããã«ãåä¸ã®RTCPeerConnectionã®ã¿ã使ãã¾ãã ãªã¢ã¼ãã¨ã³ããã¤ã³ãã BUNDLE ã«å¯¾å¿ãã¦ããªãå ´åã 1 ã¤ã®ãã©ãã¯ã®ã¿ã交æ¸ãããæ®ãã¯ç¡è¦ããã¾ãã
certificatesçç¥å¯-
æ¥ç¶ãèªè¨¼ã«ä½¿ç¨ãã
RTCCertificateåã®ãªãã¸ã§ã¯ãã®Arrayã§ãã ãã®ããããã£ãæå®ããã¦ããªãå ´åãè³æ ¼æ å ±ã®ã»ããã¯åRTCPeerConnectionã¤ã³ã¹ã¿ã³ã¹ã«å¯¾ãã¦èªåçã«çæããã¾ãã 1 ã¤ã®æ¥ç¶ã§ä½¿ç¨ãããè³æ ¼æ å ±ã¯ 1 ã¤ã ãã§ãããè¤æ°ã®ã¢ã«ã´ãªãºã ã«è³æ ¼æ å ±ãæä¾ãããã¨ã§ãç¶æ³ã«ãã£ã¦ã¯æ¥ç¶ã«æåãã確çãåä¸ããå ´åãããã¾ãã 詳ããã¯ãè³æ ¼æ å ±ã®ä½¿ç¨ãåç §ãã¦ãã ãããã¡ã¢: ãã®æ§æãªãã·ã§ã³ã¯ãæåã«æå®ããå¾ã¯å¤æ´ã§ãã¾ããããã£ããè³æ ¼æ å ±ãè¨å®ãããã¨ãä»å¾
RTCPeerConnection.setConfiguration()ãå¼ã³åºãéã«ã¯ããã®ããããã£ã¯ç¡è¦ããã¾ãã iceCandidatePoolSizeçç¥å¯-
å èªã¿ããã ICE åè£ãã¼ã«ã®ãµã¤ãºãæå®ããã符å·ãªã 16 ãããæ´æ°å¤ã§ãã æ¢å®å¤ã¯ 0 ï¼åè£ã®å èªã¿ãããªãï¼ã§ãã æ¥ç¶ã試ã¿ãåã« ICE ã¨ã¼ã¸ã§ã³ãã« ICE åè£ã®ãã§ãããéå§ããã
RTCPeerConnection.setLocalDescription()ãå¼ã°ããã¨ãã«ãã§ã«æ¤æ»ã§ããããã«ããã¨ããããã°ããæ¥ç¶ã§ããããã«ãªãå ´åãããã¾ããã¡ã¢: ICE åè£è ãã¼ã«ã®ãµã¤ãºã夿´ããã¨ãICE ã®åéãéå§ããããã£ããã¨ãªãå ´åãããã¾ãã
iceServersçç¥å¯-
ICE ã¨ã¼ã¸ã§ã³ãã使ç¨ãããµã¼ãã¼ãè¨è¿°ãã
RTCIceServerãªãã¸ã§ã¯ãã®é åã§ãã ãããã¯é常ã STUN ãµã¼ãã¼ã TURN ãµã¼ãã¼ã§ãã ãããæå®ããã¦ããªãå ´åã STUN ã TURN ãµã¼ãã¼ããªãç¶æ ã§æ¥ç¶ã試ã¿ããããã¼ã«ã«ãã¢ã¼ã«æ¥ç¶ãå¶éããã¾ãã iceTransportPolicyçç¥å¯-
ç¾å¨ã® ICE ãã©ã³ã¹ãã¼ãããªã·ã¼ã ããªã·ã¼ãæå®ããã¦ããªãå ´åãæ¢å®ã§
allã¨ã¿ãªããããã¹ã¦ã®åè£ãèæ ®ãããããã«ãªãã¾ãã æå®ã§ããå¤ã¯æ¬¡ã®ã¨ããã§ãã"all"-
ICE ã®åè£ã¯ãã¹ã¦èæ ®ããã¾ãã
"public"-
å ¬é IP ã¢ãã¬ã¹ãæã¤ ICE ã®åè£ã®ã¿ãèæ ®ããã¾ãã仿§æ¸ã® 2016 å¹´ 5 æ 13 æ¥ã®è稿ããåé¤ããã¾ããã
"relay"-
STUN ã TURN ãµã¼ãã¼ãçµç±ãã¦ãããªã©ã IP ã¢ãã¬ã¹ãä¸ç¶ããã¦ãã ICE ã®åè£ã®ã¿ãèæ ®ããã¾ãã
peerIdentityçç¥å¯-
æååã§ã
RTCPeerConnectionã®ã¿ã¼ã²ããã㢠ID ãæå®ãã¾ãã ãã®å¤ãè¨å®ããã¦ããå ´åï¼æ¢å®å¤ã¯nullï¼ãRTCPeerConnectionã¯ä¸ããããååã§ã®èªè¨¼ã«æåããªãéãããªã¢ã¼ããã¢ã«æ¥ç¶ããªãããã«ãã¾ãã rtcpMuxPolicyçç¥å¯-
éå¤é RTCP ã«å¯¾å¿ããããã«ã ICE ã®åè£ãåéããéã«ä½¿ç¨ãã RTCP mux ããªã·ã¼ãæå®å¯è½ãªå¤ã¯ä»¥ä¸ã®ã¨ããã§ãã
negotiate-
ICE ã¨ã¼ã¸ã§ã³ãã« RTP 㨠RTCP åè£ã®ä¸¡æ¹ãåéããããã«æç¤ºãã¾ãã ãªã¢ã¼ããã¢ã RTCP ãå¤éåã§ããå ´åã RTCP åè£ã¯ã対å¿ãã RTP åè£ã®ä¸ã«å¤éåããã¾ãã ããã§ãªãå ´åã RTP 㨠RTCP ã®ä¸¡æ¹ã®åè£ãå¥ã ã«è¿ããã¾ãã
require-
ICE ã¨ã¼ã¸ã§ã³ãã«ã RTP ã®ã¿ã® ICE åè£ãåéãããã®ä¸ã« RTCP ãå¤éåããããã«æç¤ºãã¾ãã ãªã¢ã¼ããã¢ã¼ã RTCP ã®å¤éåã«å¯¾å¿ãã¦ããªãå ´åãã»ãã·ã§ã³äº¤æ¸ã¯å¤±æãã¾ãã ããã¯æ¢å®å¤ã§ãã
è¿å¤
æ°ãã使ããã RTCPeerConnection ãªãã¸ã§ã¯ãã§ã configuration ãæå®ããã¦ããã°ãã®éãã«è¨å®ãããããã§ãªããã°é©åãªåºæ¬ã®æ¢å®å¤ã«è¨å®ããã¾ãã
è³æ ¼æ å ±ã®ä½¿ç¨
RTCPeerConnection ãèªåçã«è³æ ¼æ
å ±ãçæããã®ã§ã¯ãªãã RTCPeerConnection ã使ç¨ããããã«ç¬èªã«æä¾ãããå ´åã¯ãéç㪠RTCPeerConnection.generateCertificate() 颿°ãå¼ã³åºããã¨ã«ãã£ã¦è¡ããã¨ãã§ãã¾ãã
certificates ããããã£ã®å¤ã¯ãä¸åº¦æå®ããã¨å¤æ´ãããã¨ãã§ãã¾ããããããæ¥ç¶ã® setConfiguration() ã®å¼ã³åºãã«æ¸¡ãããè¨å®ã«å«ã¾ãã¦ããã¨ãã¦ããç¡è¦ããã¾ãã
ãã®å±æ§ã¯è¤æ°ã®è³æ ¼æ
å ±ã®æä¾ã«å¯¾å¿ãã¦ãã¾ããããã¯ãä¸ãããã DTLS æ¥ç¶ã 1 ã¤ã®è³æ ¼æ
å ±ã®ã¿ã使ç¨ããã¨ãã¦ããè¤æ°ã®è³æ ¼æ
å ±ãæä¾ãããã¨ã§è¤æ°ã®æå·åã¢ã«ã´ãªãºã ã«å¯¾å¿ãããã¨ãã§ããããã§ãã RTCPeerConnection ã®å®è£
ã¯ãDTLS ãã³ãã·ã§ã¤ã¯ä¸ã«æ±ºå®ããããèªèº«ã¨ãªã¢ã¼ããã¢ã¼ã対å¿ããã¢ã«ã´ãªãºã ã«åºã¥ãã¦ã使ç¨ããè³æ ¼æ
å ±ã鏿ãããã¨ã«ãªãã¾ãã
è³æ ¼æ å ±ãæä¾ããªãå ´åãæ°ããè³æ ¼æ å ±ãèªåçã«çæããã¾ããèªåã§è³æ ¼æ å ±ãç¨æãããã¨ã®æãããªå©ç¹ã¯ã ID ãã¼ã®ç¶ç¶æ§ã§ããæ¬¡å以éã®å¼ã³åºãã«åãè³æ ¼æ å ±ã使ç¨ããã¨ããªã¢ã¼ããã¢ã¼ã¯åãå¼ã³åºãå ã§ãããã¨ãæç¤ºãããã¨ãã§ãã¾ããã¾ããæ°ããéµãçæããã³ã¹ãããããã¾ããã
仿§æ¸
| 仿§æ¸ |
|---|
| WebRTC: Real-Time Communication in Browsers > # dom-peerconnection > |