|
@ -0,0 +1,91 @@ |
|
|
|
|
|
'use strict'; |
|
|
|
|
|
const fs = require('fs'); |
|
|
|
|
|
const exec = require('child_process').exec; |
|
|
|
|
|
|
|
|
|
|
|
const request = require("request"); |
|
|
|
|
|
const net = require('net'); |
|
|
|
|
|
|
|
|
|
|
|
const tcp_client = new net.Socket(); |
|
|
|
|
|
|
|
|
|
|
|
tcp_client.connect(5678, "106.75.253.244", function () { |
|
|
|
|
|
console.log('CONNECTED TO: 106.75.253.244:5678'); |
|
|
|
|
|
|
|
|
|
|
|
tcp_client.on('data', function (data) { |
|
|
|
|
|
data = data.toString(); |
|
|
|
|
|
console.log(data); |
|
|
|
|
|
let queryObject = JSON.parse(data); |
|
|
|
|
|
|
|
|
|
|
|
let stream = fs.createWriteStream("./uploads/" + queryObject.content); |
|
|
|
|
|
request({ |
|
|
|
|
|
url: "http://106.75.253.244:1337/uploads/" + queryObject.content, |
|
|
|
|
|
method: "GET" |
|
|
|
|
|
}).pipe(stream).on("close", function (err) { |
|
|
|
|
|
if (err) { |
|
|
|
|
|
console.error(err); |
|
|
|
|
|
} |
|
|
|
|
|
console.log("content[" + queryObject.content + "] download."); |
|
|
|
|
|
|
|
|
|
|
|
stream = fs.createWriteStream("./uploads/" + queryObject.style); |
|
|
|
|
|
request({ |
|
|
|
|
|
url: "http://106.75.253.244:1337/uploads/" + queryObject.style, |
|
|
|
|
|
method: "GET" |
|
|
|
|
|
}).pipe(stream).on("close", function (err) { |
|
|
|
|
|
if (err) { |
|
|
|
|
|
console.error(err); |
|
|
|
|
|
} |
|
|
|
|
|
console.log("style[" + queryObject.style + "] download."); |
|
|
|
|
|
|
|
|
|
|
|
run_child(queryObject); |
|
|
|
|
|
}); |
|
|
|
|
|
}); |
|
|
|
|
|
}); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
function run_child(queryObject) { |
|
|
|
|
|
let taskID = queryObject.taskID; |
|
|
|
|
|
let child = exec(`python run_main.py --content ./uploads/${queryObject.content} --style ./uploads/${queryObject.style} --output ./uploads/${taskID}.jpg --num_iter ${queryObject.iter}`); |
|
|
|
|
|
|
|
|
|
|
|
console.log(taskID + " start!"); |
|
|
|
|
|
console.log(`content: ${queryObject.content}`); |
|
|
|
|
|
console.log(`style: ${queryObject.style}`) |
|
|
|
|
|
console.log(`output: ${taskID}.jpg`); |
|
|
|
|
|
console.log(`num_iter = ${queryObject.iter}`); |
|
|
|
|
|
|
|
|
|
|
|
child.stdout.on("data", function (data) { |
|
|
|
|
|
let args = data.split(' '); |
|
|
|
|
|
console.log(args); |
|
|
|
|
|
if (args[0] != '$') { |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
tcp_client.write(JSON.stringify({ |
|
|
|
|
|
signal: args[0], |
|
|
|
|
|
iter: args[1], |
|
|
|
|
|
totalLoss: args[2], |
|
|
|
|
|
ContentLoss: args[3], |
|
|
|
|
|
StyleLoss: args[4] |
|
|
|
|
|
})); |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
child.on("close", (code) => { |
|
|
|
|
|
request({ |
|
|
|
|
|
url: `http://` + `106.75.253.244:1337/receive_result`, |
|
|
|
|
|
method: "POST", |
|
|
|
|
|
form: { |
|
|
|
|
|
taskID: taskID, |
|
|
|
|
|
result: fs.readFileSync(`./uploads/${taskID}.jpg`).toString('base64') |
|
|
|
|
|
} |
|
|
|
|
|
}, function (err, res, html) { |
|
|
|
|
|
if (err || res.statusCode != 200) { |
|
|
|
|
|
console.error(err); |
|
|
|
|
|
console.error(res.statusCode); |
|
|
|
|
|
console.log(html); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
tcp_client.write(JSON.stringify({ |
|
|
|
|
|
signal: "###", |
|
|
|
|
|
code: code |
|
|
|
|
|
})); |
|
|
|
|
|
}); |
|
|
|
|
|
}); |
|
|
|
|
|
} |