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() 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)