diff --git a/src/packages/collaboration/lib/guest-session.coffee b/src/packages/collaboration/lib/guest-session.coffee index 6e852b90b..b847862f3 100644 --- a/src/packages/collaboration/lib/guest-session.coffee +++ b/src/packages/collaboration/lib/guest-session.coffee @@ -35,19 +35,25 @@ class GuestSession window.site = new telepath.Site(@getId()) doc = window.site.deserializeDocument(data.doc) - servers = {iceServers: [{url: "turn:54.218.196.152:3478", credential:"youhavetoberealistic"}]} - mediaConnection = new webkitRTCPeerConnection(servers) - mediaConnection.onicecandidate = (event) => - return unless event.candidate? - console.log "Set Guest Candidate", event.candidate - doc.set 'collaborationState.guest.candidate', event.candidate - - mediaConnection.onaddstream = ({@stream}) => - @trigger 'stream-ready', @stream - console.log('Added Stream', @stream) + servers = {iceServers: [{url: "stun:54.218.196.152:3478"}, {url: "turn:ninefingers@54.218.196.152:3478", credential:"youhavetoberealistic"}]} + mediaConnection = null constraints = {video: true, audio: true} - success = (stream) => mediaConnection.addStream(stream) + success = (stream) => + mediaConnection = new webkitRTCPeerConnection(servers) + mediaConnection.onicecandidate = (event) => + return unless event.candidate? + console.log "Set Guest Candidate", event.candidate + doc.set 'collaborationState.guest.candidate', event.candidate + + mediaConnection.onaddstream = ({@stream}) => + @trigger 'stream-ready', @stream + console.log('Added Host\'s Stream', @stream) + + mediaConnection.addStream(stream) + guest = doc.get 'collaborationState.guest' + guest.set 'ready', true + navigator.webkitGetUserMedia constraints, success, console.error atom.windowState = doc.get('windowState') @@ -66,10 +72,13 @@ class GuestSession console.log "Received host description", hostDescription sessionDescription = new RTCSessionDescription(hostDescription) mediaConnection.setRemoteDescription(sessionDescription) - mediaConnection.createAnswer (guestDescription) => + success = (guestDescription) => console.log "Set guest description", guestDescription mediaConnection.setLocalDescription(guestDescription) guest.set('description', guestDescription) + + console.log "COOL?", mediaConnection? + mediaConnection.createAnswer success, console.error when 'candidate' hostCandidate = new RTCIceCandidate newValue.toObject() console.log('Guest received candidate', hostCandidate) @@ -80,8 +89,6 @@ class GuestSession connectDocument(doc, connection) @mirrorRepository(data.repoSnapshot) - guest.set 'ready', true - mirrorRepository: (repoSnapshot) -> repoPath = Project.pathForRepositoryUrl(@repository.get('url')) diff --git a/src/packages/collaboration/lib/host-session.coffee b/src/packages/collaboration/lib/host-session.coffee index 95d32ac46..62dfbd042 100644 --- a/src/packages/collaboration/lib/host-session.coffee +++ b/src/packages/collaboration/lib/host-session.coffee @@ -19,19 +19,22 @@ class HostSession start: -> return if @peer? - servers = {iceServers: [{url: "turn:54.218.196.152:3478", credential:"youhavetoberealistic"}]} - mediaConnection = new webkitRTCPeerConnection(servers) - mediaConnection.onicecandidate = (event) => - return unless event.candidate? - console.log "Set Host Candidate", event.candidate - @doc.set 'collaborationState.host.candidate', event.candidate - - mediaConnection.onaddstream = ({@stream}) => - @trigger 'stream-ready', @stream - console.log('Added Stream', @stream) + servers = {iceServers: [{url: "stun:54.218.196.152:3478"}, {url: "turn:ninefingers@54.218.196.152:3478", credential:"youhavetoberealistic"}]} + mediaConnection = null constraints = {video: true, audio: true} - success = (stream) => mediaConnection.addStream(stream) + success = (stream) => + mediaConnection = new webkitRTCPeerConnection(servers) + mediaConnection.onicecandidate = (event) => + return unless event.candidate? + console.log "Set Host Candidate", event.candidate + @doc.set 'collaborationState.host.candidate', event.candidate + + mediaConnection.onaddstream = ({@stream}) => + @trigger 'stream-ready', @stream + console.log('Added Guest\'s Stream', @stream) + + mediaConnection.addStream(stream) navigator.webkitGetUserMedia constraints, success, console.error @peer = createPeer() @@ -56,10 +59,12 @@ class HostSession guest.on 'changed', ({key, newValue}) => switch key when 'ready' - mediaConnection.createOffer (description) => + success = (description) => console.log "Create Offer", description mediaConnection.setLocalDescription(description) host.set 'description', description + + mediaConnection.createOffer success, console.error when 'description' guestDescription = newValue.toObject() console.log "Received Guest description", guestDescription diff --git a/src/packages/collaboration/lib/session-utils.coffee b/src/packages/collaboration/lib/session-utils.coffee index e9413220f..d0dd8f137 100644 --- a/src/packages/collaboration/lib/session-utils.coffee +++ b/src/packages/collaboration/lib/session-utils.coffee @@ -24,7 +24,8 @@ module.exports = createPeer: -> id = Guid.create().toString() key = '0njqmaln320dlsor' - config = {iceServers: [{url: "turn:54.218.196.152:3478", credential:"youhavetoberealistic"}]} + # config = {iceServers: [{url: "turn:ninefingers@54.218.196.152:3478", credential:"youhavetoberealistic"}]} + config = {iceServers: [{url: "stun:54.218.196.152:3478"}, {url: "turn:ninefingers@54.218.196.152:3478", credential:"youhavetoberealistic"}]} new Peer(id, {key, config}) connectDocument: (doc, connection) -> @@ -32,14 +33,14 @@ module.exports = outputListener = (event) -> return unless connection.open event.id = nextOutputEventId++ - console.log 'sending event', event.id, event +# console.log 'sending event', event.id, event connection.send(event) doc.on('replicate-change', outputListener) queuedEvents = [] nextInputEventId = 1 handleInputEvent = (event) -> - console.log 'received event', event.id, event +# console.log 'received event', event.id, event doc.applyRemoteChange(event) nextInputEventId = event.id + 1 flushQueuedEvents = -> @@ -57,7 +58,7 @@ module.exports = handleInputEvent(event) flushQueuedEvents() else - console.log 'enqueing event', event.id, event +# console.log 'enqueing event', event.id, event queuedEvents.push(event) connection.on 'close', ->