summaryrefslogtreecommitdiff
path: root/app/relay/relay.js
blob: 40bdcb31e43c9a61721ba790a52a55261319bcb4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import { remote } from './remote'
import * as rpc from './rpc'

const zerorpc = require('zerorpc')
const Readable = require('stream').Readable
const runner = require('./runner')

export const relay = new zerorpc.Server({
  // Called when the worker starts up and is ready to receive params.
  connected: function(msg, reply) {
    reply()
    console.log('got connect from ' + msg)
    remote.emit('system_res', {
      type: 'rpc_connected',
      runner: runner.status(),
    })
    rpc.set_connected(true)
    return true
  },

  send_frame: function(fn, meta, frame, reply) {
    reply()
    // console.log('got frame, ' + frame.length + ' bytes')
    remote.emit('frame', { fn: fn, meta: meta, frame: frame })
  },

  send_status: function(key, value, reply) {
    reply()
    remote.emit('status', { key: key, value: value })
  },

  disconnecting: function(reply){
    reply && reply()
    remote.emit('system_res', {
      type: 'rpc_disconnected',
    })
    rpc.set_connected(false)
    return true
  },
})
relay.on('error', function(error) {
  console.error('Relay server error:', error)
})
relay.bind('tcp://0.0.0.0:' + process.env.RELAY_PORT)
console.log('Relay listening on port ' + process.env.RELAY_PORT)