fbp-protocol-client
Version:
Client library for the FBP protocol
113 lines (94 loc) • 2.83 kB
text/coffeescript
Base = require './base'
class WebRTCRuntime extends Base
constructor: (definition) ->
= null
= false
= null
= 'webrtc'
= []
= false
super definition
getElement: ->
# FIXME: not implemented
return null
# DOM visualization for remote runtime output
console = document.createElement 'pre'
'network', (message) ->
return unless message.command is 'output'
message.payload.message = '' unless message.payload.message
encoded = message.payload.message.replace /[\u00A0-\u99999<>\&]/gim, (i) -> "&##{i.charCodeAt(0)};"
console.innerHTML += "#{encoded}\n"
console.scrollTop = console.scrollHeight
'disconnected', ->
console.innerHTML = ''
isConnected: ->
return != null
connect: ->
return if or
address =
if (address.indexOf('#') != -1)
signaller = address.split('#')[0]
id = address.split('#')[1]
else
signaller = 'https://api.flowhub.io'
id = address
options =
room: id
debug: true
channels:
chat: true
signaller: signaller
capture: false
constraints: false
expectedLocalStreams: 0
= RTC options
.on 'channel:opened:chat', (id, dc) =>
= dc
.onmessage = (data) =>
console.log 'message', data.data if
data.data
= false
'getruntime', {}
'status',
online: true
label: 'connected'
'connected'
.on 'channel:closed:chat', (id, dc) =>
dc.onmessage = null
= null
'status',
online: false
label: 'disconnected'
'disconnected'
= true
disconnect: ->
return unless
= false
.close()
send: (protocol, command, payload) ->
m =
protocol: protocol
command: command
payload: payload
if
.push m
return
return unless
console.log 'send', m if
.send JSON.stringify m
handleError: (error) =>
= null
= false
handleMessage: (message) =>
msg = JSON.parse message
switch msg.protocol
when 'runtime' then msg.command, msg.payload
when 'graph' then msg.command, msg.payload
when 'network' then msg.command, msg.payload
when 'component' then msg.command, msg.payload
flush: ->
for item in
item.protocol, item.command, item.payload
= []
module.exports = WebRTCRuntime