Add user to turn server configuration

This commit is contained in:
Matt Colyer
2013-07-23 10:04:07 -07:00
committed by Corey Johnson & Matt Colyer
parent 07dea75562
commit 0e3940373d
3 changed files with 43 additions and 30 deletions

View File

@@ -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'))

View File

@@ -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

View File

@@ -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', ->