Its true that, there is NO JavaScript API "currently" available in RTCWeb drafts to disable ICE-trickling process however, there is a trick that can be used to merge all candidate pairs in the session-description, and then you merely need to share that "single" SDP only.
The trick is simple: Wait until "end-of-candidate" signal is fired.
Usually "onicecandidate
" event returns "NULL
" entry for "event.candidate
" object.
In "old-good" days, we were watching for "oniceconnectionstatechange
" event, and checking for "peer.iceGatheringState === 'complete'
" to return the SDP.
BTW, you can still listen for both "end-of-candidate" NULL value, as well as "peer.iceGatheringS tate === 'complete'
".
peer.oniceconnectionstatechange = function(event) { if (peer.iceGatheringState === 'complete') { send_sdp_to_remote_peer(); } }; peer.onicecandidate = function(event) { if (event.candidate === null) { return send_sdp_to_remote_peer(); } }; var isSdpSent = false; function send_sdp_to_remote_peer() { if (isSdpSent) return; isSdpSent = true; var sdp = peer.localDescription; socket.emit('remote-sdp', sdp); }
Use cases:
1. Force browser to download/save files like PDF/HTML/PHP/ASPX/JS/CSS/etc. on disk
2. Concatenate all transmitted blobs and save them as file on disk - it is useful in file sharing applications
Microsoft Edge? (msSaveBlob/msSaveOrOpenBlob)https://msdn.microsoft.com/en-us/library/hh779016(v=vs.85).aspx[1]
/** * @param {Blob} file - File or Blob object. This parameter is required. * @param {string} fileName - Optional file name e.g. "image.png" */functioninvokeSaveAsDialog(file, fileName){if(!file){throw'Blob object is required.'; }if(!file.type){ file.type ='video/webm'; }var fileExtension = file.type.split('/')[1]; if(fileName && fileName.indexOf('.')!==-1){var splitted = fileName.split('.'); fileName = splitted[0]; fileExtension = splitted[1]; }var fileFullName …
- ^ https://msdn.microsoft.com/en-us/library/hh779016(v=vs.85).aspx (msdn.microsoft.com)