diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/bridge/index.js | 17 | ||||
| -rw-r--r-- | lib/server/index.js | 11 | ||||
| -rw-r--r-- | lib/worker/processFiles.js | 2 |
3 files changed, 27 insertions, 3 deletions
diff --git a/lib/bridge/index.js b/lib/bridge/index.js index 199dfb3..b6403ba 100644 --- a/lib/bridge/index.js +++ b/lib/bridge/index.js @@ -1,6 +1,6 @@ import { execFile, spawn } from 'child_process' -export default class Bridge { +class Bridge { constructor() { this.cpus = [] this.getDevices() @@ -13,6 +13,12 @@ export default class Bridge { console.error('error fetching devices:', err) }) } + connectSocketIo(io) { + this.io = io + } + broadcast(message, data) { + this.io && this.io.emit(message, data) + } run(args) { return new Promise( (resolve, reject) => { console.log('>', args.join(' ')) @@ -33,6 +39,10 @@ export default class Bridge { } } +const bridge = new Bridge + +export default bridge + var ipc = require('node-ipc') ipc.config.id = 'cortex' @@ -42,6 +52,7 @@ ipc.serve( () => { ipc.server.on('connect', (socket) => { console.log('>>> worker connected') ipc.server.emit(socket, 'message', true) + bridge.broadcast('worker', {connected: true}) }) ipc.server.on('message', (data, socket) => { ipc.log('got a message : '.debug, data); @@ -51,6 +62,10 @@ ipc.serve( () => { // data+' world!' // ) }) + ipc.server.on('processed', (data, socket) => { + console.log('processed job') + bridge.broadcast('processed', data) + }) ipc.server.on( 'socket.disconnected', (socket, destroyedSocketID) => { ipc.log('client ' + destroyedSocketID + ' has disconnected!'); }) diff --git a/lib/server/index.js b/lib/server/index.js index 5b1150c..c6176fe 100644 --- a/lib/server/index.js +++ b/lib/server/index.js @@ -3,18 +3,21 @@ const express = require('express') const http = require('http') const bodyParser = require('body-parser') const path = require('path') +const socketIo = require('socket.io') + +import bridge from '../bridge' const multer = require('multer') const upload = multer({ dest: 'uploads/' }) const Loader = require('../vendor/Loader') -let app, server +let app, server, io const db = require('../db') const site = module.exports = {} -site.init = function(bridge){ +site.init = function(){ app = express() app.use(express.static(path.join(__dirname, '../../public'))) app.use(bodyParser.json()) @@ -25,6 +28,10 @@ site.init = function(bridge){ server = http.createServer(app).listen(process.env.PORT, function () { console.log('Cortex listening at http://localhost:%s', server.address().port) }) + + io = socketIo(server) + + bridge.connectSocketIo(io) constĀ api_folders = crud(app, 'folder', db.Folder, { afterCreate: (folder) => { diff --git a/lib/worker/processFiles.js b/lib/worker/processFiles.js index bde15ef..562e625 100644 --- a/lib/worker/processFiles.js +++ b/lib/worker/processFiles.js @@ -1,3 +1,4 @@ +const ipc = require('node-ipc') const db = require('../db') const dbFile = db.crud(db.File) const path = require('path') @@ -130,5 +131,6 @@ function processImage(file) { } function processDone(file) { + ipc.of.cortex && ipc.of.cortex.emit("processed", { file: file }) return file.save({ processed: true }) }
\ No newline at end of file |
