diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-05-20 14:29:32 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-05-20 14:29:32 +0200 |
| commit | 1a6ae72c46b08c27db0ca5da9fe8f84b38c0f769 (patch) | |
| tree | 066c4ded4a40675eb7205516ade4515df9617ea6 /app/relay/index.js | |
| parent | ccf9f701f42403b58e8520d82b33671770518a38 (diff) | |
more relay stuff, setting up server
Diffstat (limited to 'app/relay/index.js')
| -rw-r--r-- | app/relay/index.js | 53 |
1 files changed, 43 insertions, 10 deletions
diff --git a/app/relay/index.js b/app/relay/index.js index 22dc85f..2ed8e10 100644 --- a/app/relay/index.js +++ b/app/relay/index.js @@ -1,6 +1,33 @@ -const zerorpc = require('zerorpc') require('dotenv').config() +const io = require('socket.io-client') +const ss = require('socket.io-stream') +const zerorpc = require('zerorpc') +const Readable = require('stream').Readable; + +let remote = io.connect(process.env.SOCKETIO_REMOTE); + +remote.on('cmd', (data) => { + if (! data.cmd || ! data.payload) { + console.log('malformed param...?') + return + } + console.log('got', data.cmd) + switch (data.cmd) { + case 'send_param': + rpc.invoke(data.cmd, data.payload.key, data.payload.value, (err, res, more) => { + console.log('sent param', res) + }) + break + case 'get_params': + rpc.invoke(data.cmd, (err, res, more) => { + console.log('got params', res) + remote.emit('params', res) + }) + break + } +}) + let rpc = new zerorpc.Client() rpc.connect("tcp://127.0.0.1:" + process.env.RPC_PORT) rpc.on("error", function(error) { @@ -9,17 +36,24 @@ rpc.on("error", function(error) { console.log('RPC listening on port ' + process.env.RPC_PORT) let relay = new zerorpc.Server({ - send_file: function (file, reply) { - reply() - console.log('got file, ' + file.length + ' bytes') - }, + // Called when the worker starts up and is ready to receive params. connected: function (msg, reply) { reply() - console.log("got connect, trying to call back.") - rpc.invoke("send_param", "foo", "bar", (err, res, more) => { - console.log('sent param') - }) + console.log("got connect from " + msg) return true + }, + + send_frame: function (fn, frame, reply) { + reply() + console.log('got frame, ' + frame.length + ' bytes') + var stream = ss.createStream(); + ss(remote).emit('frame', stream, {name: fn}) + + var s = new Readable(); + s._read = function noop() {} + s.push(frame) + s.push(null); + s.pipe(stream) } }) relay.on("error", function(error) { @@ -27,4 +61,3 @@ relay.on("error", function(error) { }) relay.bind("tcp://0.0.0.0:" + process.env.RELAY_PORT); console.log('Relay listening on port ' + process.env.RELAY_PORT) - |
