答复: DataConnection objects

Why we limit one DataConnection per one PeerConnection?
This DataConnection is only used by non-media data right, so why we have maxStreams?
Does you mean data streams but not mediastreams?

-----邮件原件-----
发件人: Randell Jesup [mailto:randell-ietf@jesup.org] 
发送时间: 2012年6月12日 16:26
收件人: public-webrtc@w3.org
主题: DataConnection objects

Building on the discussions today in the WebRTC W3 WG meeting:

In PeerConnection, replace

DataChannel createDataChannel (
      [TreatNullAs=EmptyString] DOMString? label,
      optional DataChannelInit? dataChannelDict);

With

DataConnection createDataConnection(short initialStreams);

Add:

interface DataConnection {
     DataChannel createDataChannel (
              [TreatNullAs=EmptyString] DOMString? label,
              optional DataChannelInit? dataChannelDict);
     attribute short maxStreams;
     const unsigned short CONNECTING = 0;
     const unsigned short OPEN = 1;
     const unsigned short CLOSING = 2;
     const unsigned short CLOSED = 3;
     readonly attribute unsigned short readyState;
     [TreatNonCallableAsNull]
              attribute Function?      onopen;
     [TreatNonCallableAsNull]
              attribute Function?      onerror;
     [TreatNonCallableAsNull]
              attribute Function?      onclose;
     void close ();
};

readyState may need to be changed to strings

Calling createDataConnection() before CreateOffer will cause the offer 
to include a DataConnection.  Calling it after the PeerConnection is 
connected will cause a renegotiation.

There can only be one DataConnection per PeerConnection at any time; 
attempting to create a second one will fail.

maxStreams lets you renegotiate the maximum number of simultaneous open 
streams.

Plus appropriate language about what happens if you close/destroy the 
DataConnection (close/disconnect all DataChannels, etc)

Open question: How does this interact with CreateAnswer?  They can call 
createDataConnection and then CreateAnswer, but they need to know that 
the offer asked for a DataConnection.  (Justin, Cullen)?

Open question: createDataChannel before onopen: does it queue?  Given 
we've exposed this object, I'd guess no, and trying to create one when 
not in the open readyState will fail.

Open question: Do we need a global DataConnection priority, or just 
priorities on the individual DataChannels?

-- 
Randell Jesup
randell-ietf@jesup.org

Received on Tuesday, 12 June 2012 09:32:20 UTC