From aa11baa5107f9d077280bc35c7ffccc2442c2045 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sun, 20 May 2018 16:47:42 +0200 Subject: wooooo streaming files over a series of sockets!! --- app/relay/index.js | 17 ++--------------- app/server/index.js | 15 +++------------ public/assets/js/app.js | 47 +++++++++++++++++++++++++---------------------- public/index.html | 1 - requirements.txt | 1 + rpc/rpc.py | 38 ++++++++++++++++++++++++++++++++------ 6 files changed, 63 insertions(+), 56 deletions(-) diff --git a/app/relay/index.js b/app/relay/index.js index eaec38b..a5a01b9 100644 --- a/app/relay/index.js +++ b/app/relay/index.js @@ -1,7 +1,6 @@ require('dotenv').config() const io = require('socket.io-client') -const ss = require('socket.io-stream') const zerorpc = require('zerorpc') const Readable = require('stream').Readable; @@ -51,20 +50,8 @@ let relay = new zerorpc.Server({ send_frame: function (fn, frame, reply) { reply() - console.log('got frame, ' + frame.length + ' bytes') - remote.emit('frame', fn, frame) - // var stream = ss.createStream() - // stream.on('data', () => { console.log('stream data...') }) - // // console.log(stream) - - // var rs = new Readable() - // rs.on('data', (d) => { console.log('rs data...', d.length) }) - // rs._read = function noop() {} - // rs.pipe(stream) - // rs.push(frame) - // rs.push(null) - // ss(remote).on('frame', () => console.log('frame??')) - // ss(remote).emit('frame', stream, {name: fn}, function(){ console.log('where am i') }) + // console.log('got frame, ' + frame.length + ' bytes') + remote.emit('frame', { fn: fn, frame: frame }) } }) relay.on("error", function(error) { diff --git a/app/server/index.js b/app/server/index.js index 0478b81..429cbb1 100644 --- a/app/server/index.js +++ b/app/server/index.js @@ -34,21 +34,12 @@ client.on('connect', socket => { relay.on('connect', socket => { console.log('Relay connected') socket.on('res', data => { - console.log('received response', data.cmd) + console.log('Received response', data.cmd) client.emit('res', data) }) - socket.on('frame', (fn, data) => { - console.log('relay frame', fn, data.length) - client.emit('frame', fn, data) - }) - - ss(relay).on('frame', (stream, data) => { - console.log('received frame', data) - Object.values(client.connected).map(socket => { - console.log('emitting to socket') - ss(socket).emit('frame', stream, data) - }) + socket.on('frame', (data) => { + client.emit('frame', data) }) socket.on('disconnect', () => { diff --git a/public/assets/js/app.js b/public/assets/js/app.js index 87cb48d..0ea5eeb 100644 --- a/public/assets/js/app.js +++ b/public/assets/js/app.js @@ -1,28 +1,40 @@ -var socket = io.connect('/client'); +const container = document.querySelector('#container') -ss(socket).on('frame', (stream, data) => { - console.log('received frame', data) - Object.values(client.connected).map(socket => { - ss(socket).emit('frame', stream, data) - }) -}) +let socket = io.connect('/client') +let got_frame = false socket.on('res', (data) => { console.log(data) }) -socket.on('frame', (fn, data) => { - console.log('frame', fn, data.length) - document.write(data) +socket.on('frame', (data) => { + got_frame = true + console.log('frame', data.fn) + // console.log(data.frame) + // return + const blob = new Blob([data.frame], { type: 'image/jpg' }) + const url = URL.createObjectURL(blob) + + const img = new Image () + img.onload = function() { + URL.revokeObjectURL(url) + container.innerHTML = '' + container.appendChild(img) + } + img.src = url }) socket.emit('cmd', { cmd: 'get_params', }) -socket.emit('cmd', { - cmd: 'get_last_frame', -}) +setTimeout(() => { + if (!got_frame) { + socket.emit('cmd', { + cmd: 'get_last_frame', + }) + } +}, 500) socket.emit('cmd', { cmd: 'send_param', @@ -31,12 +43,3 @@ socket.emit('cmd', { 'value': 'test', } }) - -// $('#file').change(function(e) { -// var file = e.target.files[0]; -// var stream = ss.createStream(); - -// // // upload a file to the server. -// // ss(socket).emit('file', stream, {size: file.size}); -// // ss.createBlobReadStream(file).pipe(stream); -// }) \ No newline at end of file diff --git a/public/index.html b/public/index.html index 9f851c2..04817a1 100644 --- a/public/index.html +++ b/public/index.html @@ -13,7 +13,6 @@
-