| Shipping on desktop | 146 |
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADxkKiKuE79-xWUFiO9NCy%2Big9Pvn1oi6fVbkdomFLo4--bJQw%40mail.gmail.com.
This is generally why we require explainers. Part of the point of this launch process is ensuring we've got the public material for web developers to understand the feature. Harald can you post an explainer somewhere which includes answers to Rob's questions?
Thanks,RickOn Wed, Jan 21, 2026 at 9:30 AM Robert Flack <fla...@chromium.org> wrote:The specification just says "alwaysNegotiateDataChannels defines a way for the application to negotiate data channels in the SDP offer before creating a datachannel".
I'm finding it a bit hard to reason about what this means for me as a developer. I.e. when should I set it and how does this change the connection?
Does this mean that a data channel will be negotiated without calling createDataChannel?
Will that requested datachannel result in a datachannel event or does my code still need to call createDataChannel? If the latter, is this a performance optimization?
Would I choose this when data is more important to connect first rather than e.g. voice / video?
The linked tracking bug appears to be a chrome-only bug report with a particular demo that doesn't use the alwaysNegotiateDataChannels attribute and works on Firefox. I don't quite understand what the new configuration extension has to do with the original bug report.
This feature is only needed by the endpoint that creates the initial offer and decides the m= section order, i.e. the other endpoint - whether they support this feature or not - will accept the m= section order that is on offer. Once the order is decided, it is "locked in" by both endpoints, as per old SDP rules. So it should be cross-browser compatible and backwards-compatible, here's me setting SDP with m= application line first and the offer is accepted: https://jsfiddle.net/henbos/oweu42yz/As for if the browser that is creating this offer supports the feature, you can feature detect by testing it on a throwaway RTCPeerConnection object that you immediately close afterwards.
On Monday, January 26, 2026 at 4:46:05 PM UTC+1 Robert Flack wrote:On Mon, Jan 26, 2026 at 10:25 AM Robert Flack <fla...@chromium.org> wrote:Sorry, quick followup, keeping always in the name would make sense if it was explained that because this is negotiated first it ensures that we at least will always negotiate a data channel even if audio and video fail.On Mon, Jan 26, 2026 at 10:23 AM Robert Flack <fla...@chromium.org> wrote:Thank you for the explanation. I definitely agree that this sounds very important. My concern remains that the parameter name and developer documentation does not convey this and without this context it's unclear why I should use this. As an example, the config parameter could just be called negotiateDataChannels, as a cue that this will ensure your connection is configured to support creating data channels. It would be worth also explaining why you want to do this, with a short snippet showing how a data channel can be added later.
The spec says that it is negotiated before audio or video but doesn't explain why you might want to do this - i.e. to ensure that you can negotiate a connection even if the audio or video channels fail to negotiate a compatible codec.TLDR; I'm not opposed to this feature - after learning what it does and why, I agree we need it. I just think it would be very hard for someone reading about this to understand that they should use it to resolve these issues.