RTCPeerConnection.createDataChannel()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2020ë 1ì.
RTCPeerConnection ì¸í°íì´ì¤ì createDataChannel() ë©ìëë ì´ë¤ íìì ë°ì´í°ë ì¡ì í ì ìëë¡ ì격 ì ì ì ì°ê²°íë ì ê· ì±ëì ìì±í©ëë¤.ì´ ë°©ë²ì ì´ë¯¸ì§, íì¼ ì ì¡, 문ì ì±í
, ê²ì í¨í· ì
ë°ì´í¸ ë±ê³¼ ê°ì ë°±ì±ë 컨í
ì¸ ì ì ì©íê² ì¬ì© ê°ë¥í©ëë¤.
ì°ê²° ì¸í°íì´ì¤ì ì ê· ì±ëì´ ì²ì ì¶ê°ëë©´, ì¬íì ê³¼ì ì´ negotiationneeded ì´ë²¤í¸ë¥¼ ì ë¬íì¬ ììë©ëë¤.
Syntax
dataChannel = RTCPeerConnection.createDataChannel(label[, options]);
매ê°ë³ì
label-
ì¬ëì´ ì½ì ì ìë ì±ë ì´ë¦ì ëë¤. ì´ë¦ì 문ìì´ì 65,535 ë°ì´í¸ ë³´ë¤ ììì¼í©ëë¤.
optionsOptional-
RTCDataChannelInitdictionaryê° ë°ì´í° ì±ëì ëí ì¤ì ìµì ë¤ì ì ê³µí©ëë¤.
RTCDataChannelInit ëì ë리
RTCDataChannelInit ëì
ë리ë ê°ë°ìì íìì ë°ë¼ ë°ì´í° ì±ëì ì¤ì í ë ê°ì²´ë¡ ì ë¬ëë ìµì
매ê°ë³ìë¡ ì ë¬ëë ê°ì²´ì í¬í¨ ë ì ìë ë¤ìì íëë¤ì ì ê³µí©ëë¤:
orderedOptional-
ì´ ìµì ì
RTCDataChannelì ì ë¬ë ë©ì¸ì§ê° ë³´ë´ì§ ììëë¡ ìëë°©ìê² ëì°©í´ì¼íëì§ (true) ìëë©´ ììê° ë¬ë¼ë íì© (false)ì´ ëëì§ë¥¼ ê²°ì í©ëë¤. 기본 ê°:true. maxPacketLifeTimeOptional-
ë¶ìì í 모ëìì ë©ì¸ì§ë¥¼ ì ì¡ í ë ìµë ëª ì´ ëì ì ì¡ì ìë í ê²ì¸ì§ë¥¼ ê²°ì íë ìµì ì ëë¤. ì´ ê°ì 16bitì ë¶í¸ê° ìë ì ìíì´ì§ë§, ê° ì ì ìì´ì í¸ë ì ì íë¤ê³ íë¨ëë ìµë ê°ì¼ë¡ ì§ì í ì ììµëë¤. (주ì:
maxPacketLifeTimeí¹ìmaxRetransmitsìµì ë ì¤ íëë§ ì¬ì©í´ì¼í¨.) 기본 ê°:null. maxRetransmitsOptional-
ë¶ìì í 모ëìì ë©ì¸ì§ ì ì¡ì´ ì¤í¨íë©´ ìµë ëª ë²ì ì¬ìë í ê²ì¸ì§ë¥¼ ê²°ì íë ìµì ì ëë¤. ì´ ê°ì 16bitì ë¶í¸ê° ìë ì ìíì´ì§ë§, ê° ì ì ìì´ì í¸ë ì ì íë¤ê³ íë¨ëë ìµë ê°ì¼ë¡ ì§ì í ì ììµëë¤. (주ì:
maxPacketLifeTimeí¹ìmaxRetransmitsìµì ë ì¤ íëë§ ì¬ì©í´ì¼í¨.) 기본 ê°:null. protocolOptional-
RTCDataChannelì ì¬ì©ëë ìë¸ íë¡í ì½ì ì´ë¦ì ëë¤. ì¡´ì¬íì§ ìì¼ë©´ ì´ ìµì ì ë¹ ë¬¸ìì´ ("")ì ëë¤. 기본 ê°: ë¹ ë¬¸ìì´,"". ì´ ë¬¸ìì´ì 65,535 ë°ì´í¸ ë³´ë¤ ììì¼í©ëë¤. negotiatedOptional-
기본 ê°ì¼ ê²½ì° (
false), ë°ì´í°ì±ëì ë°´ëì ëì ë´ìì íìë©ëë¤. ì´ ë, í 쪽ìcreateDataChannel를 í¸ì¶íê³ , ë¤ë¥¸ 쪽ììëRTCDataChannelEventì´ë²¤í¸ë¥¼ondatachannelEventHandler를 ì¬ì©í´ì ê°ì²í©ëë¤. ë°ëë¡trueì¼ ê²½ì°, ë°´ëì ëì ë²ì를 ë²ì´ëë ì¬íìì´ ê°ë¥í´ì§ëë¤. ì´ ëìë ì쪽ìì í©ìë id를 ê°ì§createDataChannelì í¸ì¶íê²ë©ëë¤. 기본 ê°:false. idOptional-
ì±ëì ëí 16bit ì«ìí IDì ëë¤. íì©ëë ê°ì 0ìì 65534 ì¬ì´ì ëë¤. ì´ ê°ì ì§ì íì§ ìì¼ë©´, ì ì ìì´ì í¸ê° ììì ID를 ì§ì í´ì¤ëë¤.
ì°¸ê³ :
RTCDataChannelInit ëì
ë리를 ì¬ì©í´ì ì¤ì ì´ ê°ë¥í ìµì
ë¤ì RTCDataChannel ì¸í°íì´ì¤ìì ì¤ì ì´ ê°ë¥í í¹ì±ë¤ì ìë¸ ì
ì ë»í©ëë¤.
ë°í ê°
ì§ì í labelì ê°ì§ê³ , optionsì ì§ì í ìµì
ë¤ì ì¬ì©íì¬ ì¤ì ë ì ê· RTCDataChannel ê°ì²´ì
ëë¤. ê° ë§¤ê°ë³ìë¤ì ì§ì íì§ ìì¼ë©´, 기본 ê°ì¼ë¡ ì¤ì ëì´ ìì±ë©ëë¤.
ìì¸ì²ë¦¬
InvalidStateError-
RTCPeerConnectionê° ë«íììì ë»í©ëë¤. TypeError-
ì´ ìë¬ë ì¬ë¬ ìí©ìì ë°ìì´ ê°ë¥í©ëë¤:* label í¹ì íë¡í ì½ ë¬¸ìì´ì´ ë무 길ì´ì ë°ìí©ëë¤. í´ë¹ 문ìì´ì 65,535ë°ì´í¸ë³´ë¤ ììì¼í©ëë¤.
idê° 65535ì¬ì ë°ìí©ëë¤. ì´ ê°ì ì í¨í ë¶í¸ê° ìë 16bit ì´ì§ë§,idê°ì¼ë¡ íì©ëë ë²ì를 ë²ì´ëê²ë©ëë¤. (0-65534 ê¹ì§ë§ íì©)
SyntaxError-
maxPacketLifeTimeìmaxRetransmitsìµì ì 모ë ê°ì´ ì§ì ëë©´ ë°ìí©ëë¤. ë ì¤ íëìë§ non-nullê°ì ì§ì í´ì¼ í©ëë¤. ResourceInUse-
idê°ì´ ì§ì ëìì§ë§, ë¤ë¥¸RTCDataChannelìì ì´ë¯¸ ê°ì ì´ë¦ì ì¬ì© ì¤ì´ë©´ ë°ìí©ëë¤. OperationError-
ì§ì í
idê° ì´ë¯¸ ì¬ì© ì¤ì´ê±°ë,idê° ì§ì ëì§ ììë¤ë©´ 모ë IDë¤ì´ ì¬ì© ì¤ì´ê¸° ë문ì WebRTC ë ì´ì´ìì ìëì¼ë¡idìì±ì´ ë¶ê°ë¥ í ë ë°ìí©ëë¤.
ìì
ìëì ìì ììë ì´ë»ê² ë°ì´í° ì±ëì ìì±íê³ , ìì± í ë ë©ì¸ì§ë¥¼ ì ì¡íê³ ìì íë ì´ë²¤í¸ì¸ openì messageìëí í¸ë¤ë¬ë¥¼ ì¤ì í©ëë¤. (onnegotiationneededë ì´ë¯¸ ì¤ì ì´ ëìë¤ê³ ê°ì íê³ ê°ìíí ìì
ëë¤.)
// Offerer side
var pc = new RTCPeerConnection(options);
var channel = pc.createDataChannel("chat");
channel.onopen = function (event) {
channel.send("Hi you!");
};
channel.onmessage = function (event) {
console.log(event.data);
};
// Answerer side
var pc = new RTCPeerConnection(options);
pc.ondatachannel = function (event) {
var channel = event.channel;
channel.onopen = function (event) {
channel.send("Hi back!");
};
channel.onmessage = function (event) {
console.log(event.data);
};
};
ë¤ë¥¸ ë°©ë²ì¼ë¡ë ì쪽ìì í©ìí id를 ì¬ì©íì¬ ë³´ë¤ ëì¹ì ì¸ ëì ë°´ë ì¸ íìì´ ê°ë¥í©ëë¤. (idë 0ì ëë¤):
// Both sides
var pc = new RTCPeerConnection(options);
var channel = pc.createDataChannel("chat", { negotiated: true, id: 0 });
channel.onopen = function (event) {
channel.send("Hi!");
};
channel.onmessage = function (event) {
console.log(event.data);
};
ì°ê²° ë° ì±ëì´ êµ¬ì±ëë ì를 ë ìì¸í ìê³ ì¶ë¤ë©´, A simple RTCDataChannel sample를 참조íììì¤.
ëª ì¸
| Specification |
|---|
| WebRTC: Real-Time Communication in Browsers > # dom-peerconnection-createdatachannel > |