From d9e6b8b61f00abf5a166deec596de9a2f869b68c Mon Sep 17 00:00:00 2001 From: Sean DuBois Date: Sat, 11 Aug 2018 00:23:40 -0700 Subject: [PATCH] Update examples to only generate SDP when candidates are done gathering --- examples/data-channels/README.md | 2 +- examples/data-channels/jsfiddle/demo.js | 10 ++++++---- examples/gstreamer-receive/jsfiddle/demo.js | 10 ++++++---- examples/gstreamer-send/README.md | 2 +- examples/gstreamer-send/jsfiddle/demo.js | 11 +++++++---- examples/save-to-disk/README.md | 2 +- examples/save-to-disk/jsfiddle/demo.js | 10 ++++++---- internal/network/port-send.go | 2 +- 8 files changed, 29 insertions(+), 20 deletions(-) diff --git a/examples/data-channels/README.md b/examples/data-channels/README.md index 85c3e018..8cc45c7a 100644 --- a/examples/data-channels/README.md +++ b/examples/data-channels/README.md @@ -8,7 +8,7 @@ go get github.com/pions/webrtc/examples/data-channels ``` ### Open data-channels example page -[jsfiddle.net](https://jsfiddle.net/gh/get/library/pure/pions/webrtc/tree/master/examples/data-channels/jsfiddle) +[jsfiddle.net](http://jsfiddle.net/9tsx15mg/1/) ### Run data-channels, with your browsers SessionDescription as stdin In the jsfiddle the top textarea is your browser's session description, copy that and: diff --git a/examples/data-channels/jsfiddle/demo.js b/examples/data-channels/jsfiddle/demo.js index c3c7269b..18f2e19e 100644 --- a/examples/data-channels/jsfiddle/demo.js +++ b/examples/data-channels/jsfiddle/demo.js @@ -11,12 +11,14 @@ sendChannel.onopen = () => console.log('sendChannel has opened') sendChannel.onmessage = e => log(`sendChannel got '${e.data}'`) pc.oniceconnectionstatechange = e => log(pc.iceConnectionState) +pc.onicecandidate = event => { + if (event.candidate === null) { + document.getElementById('localSessionDescription').value = btoa(pc.localDescription.sdp) + } +} pc.onnegotiationneeded = e => - pc.createOffer({ }).then(d => { - document.getElementById('localSessionDescription').value = btoa(d.sdp) - return pc.setLocalDescription(d) - }).catch(log) + pc.createOffer().then(d => pc.setLocalDescription(d)).catch(log) window.sendMessage = () => { let message = document.getElementById('message').value diff --git a/examples/gstreamer-receive/jsfiddle/demo.js b/examples/gstreamer-receive/jsfiddle/demo.js index 0eef2646..3761de19 100644 --- a/examples/gstreamer-receive/jsfiddle/demo.js +++ b/examples/gstreamer-receive/jsfiddle/demo.js @@ -10,12 +10,14 @@ navigator.mediaDevices.getUserMedia({video: true, audio: true}) .catch(log) pc.oniceconnectionstatechange = e => log(pc.iceConnectionState) +pc.onicecandidate = event => { + if (event.candidate === null) { + document.getElementById('localSessionDescription').value = btoa(pc.localDescription.sdp) + } +} pc.onnegotiationneeded = e => - pc.createOffer().then(d => { - document.getElementById('localSessionDescription').value = btoa(d.sdp) - return pc.setLocalDescription(d) - }).catch(log) + pc.createOffer().then(d => pc.setLocalDescription(d)).catch(log) window.startSession = () => { let sd = document.getElementById('remoteSessionDescription').value diff --git a/examples/gstreamer-send/README.md b/examples/gstreamer-send/README.md index 02fa7b3d..e2a435d1 100644 --- a/examples/gstreamer-send/README.md +++ b/examples/gstreamer-send/README.md @@ -14,7 +14,7 @@ go get github.com/pions/webrtc/examples/gstreamer-send ``` ### Open gstreamer-send example page -[jsfiddle.net](https://jsfiddle.net/gh/get/library/pure/pions/webrtc/tree/master/examples/gstreamer-send/jsfiddle) you should see two text-areas and a 'Start Session' button +[jsfiddle.net](https://jsfiddle.net/Laf7ujeo/5/) you should see two text-areas and a 'Start Session' button ### Run gstreamer-send with your browsers SessionDescription as stdin In the jsfiddle the top textarea is your browser, copy that and: diff --git a/examples/gstreamer-send/jsfiddle/demo.js b/examples/gstreamer-send/jsfiddle/demo.js index 7ec230fa..6c4e8910 100644 --- a/examples/gstreamer-send/jsfiddle/demo.js +++ b/examples/gstreamer-send/jsfiddle/demo.js @@ -15,10 +15,13 @@ pc.ontrack = function (event) { } pc.oniceconnectionstatechange = e => log(pc.iceConnectionState) -pc.createOffer({offerToReceiveVideo: true, offerToReceiveAudio: true}).then(d => { - document.getElementById('localSessionDescription').value = btoa(d.sdp) - return pc.setLocalDescription(d) -}).catch(log) +pc.onicecandidate = event => { + if (event.candidate === null) { + document.getElementById('localSessionDescription').value = btoa(pc.localDescription.sdp) + } +} + +pc.createOffer({offerToReceiveVideo: true, offerToReceiveAudio: true}).then(d => pc.setLocalDescription(d)).catch(log) window.startSession = () => { let sd = document.getElementById('remoteSessionDescription').value diff --git a/examples/save-to-disk/README.md b/examples/save-to-disk/README.md index 82ce432f..f3997ef7 100644 --- a/examples/save-to-disk/README.md +++ b/examples/save-to-disk/README.md @@ -8,7 +8,7 @@ go get github.com/pions/webrtc/examples/save-to-disk ``` ### Open save-to-disk example page -[jsfiddle.net](https://jsfiddle.net/usd3xmtz/2/) you should see your Webcam, two text-areas and a 'Start Session' button +[jsfiddle.net](https://jsfiddle.net/dyj8qpek/) you should see your Webcam, two text-areas and a 'Start Session' button ### Run save-to-disk, with your browsers SessionDescription as stdin In the jsfiddle the top textarea is your browser, copy that and: diff --git a/examples/save-to-disk/jsfiddle/demo.js b/examples/save-to-disk/jsfiddle/demo.js index 0eef2646..3761de19 100644 --- a/examples/save-to-disk/jsfiddle/demo.js +++ b/examples/save-to-disk/jsfiddle/demo.js @@ -10,12 +10,14 @@ navigator.mediaDevices.getUserMedia({video: true, audio: true}) .catch(log) pc.oniceconnectionstatechange = e => log(pc.iceConnectionState) +pc.onicecandidate = event => { + if (event.candidate === null) { + document.getElementById('localSessionDescription').value = btoa(pc.localDescription.sdp) + } +} pc.onnegotiationneeded = e => - pc.createOffer().then(d => { - document.getElementById('localSessionDescription').value = btoa(d.sdp) - return pc.setLocalDescription(d) - }).catch(log) + pc.createOffer().then(d => pc.setLocalDescription(d)).catch(log) window.startSession = () => { let sd = document.getElementById('remoteSessionDescription').value diff --git a/internal/network/port-send.go b/internal/network/port-send.go index 5e5016f1..4bc257d5 100644 --- a/internal/network/port-send.go +++ b/internal/network/port-send.go @@ -12,7 +12,7 @@ func (p *port) sendRTP(packet *rtp.Packet, dst net.Addr) { p.m.certPairLock.RLock() defer p.m.certPairLock.RUnlock() if p.m.certPair == nil { - fmt.Printf("Tried to send SRTP packet but no DTLS state to handle it %v \n", p.m.certPair) + fmt.Println("Tried to send SRTP packet but no DTLS state to handle it") return }