2017-09-20 9 views
1

私は次のように呼ばれている子プロセスがあります、ノードjsの子プロセスから 'parent'への出力イメージの送信方法

app.get('/search', function (req, res) { 
    var cp = spawn('node', 'app.js'); 
    cp.stdout.on('data', function(data) { 
     console.log('stdout: ' + data); 
    }); 
    ... 
}); 

現在app.js

server.jsは、スクリーンショットを生成するために、クロームヘッドレスcaptureScreenshot機能を利用しているがローカルに格納されます。

app.js:

const img = await Page.captureScreenshot({format: 'png', fromSurface: true}); 
    fs.writeFile('./screenshot.png', img.data, 'base64', function (err) { 
     if (err) { 
      console.log(err); 
     } 
    }); 

ローカルに画像を保存するのではなく、サーバーにアップロードする必要はありません。私はこの機能が動作するように取得する方法を見つけようとしています:

server.jsのV2

app.get('/search', function (req, res) { 
    var cp = spawn('node', 'app.js'); 
    cp.stdout.on('data', function(data) { 
     upload_image(data); 
    }); 
    ... 
}); 

app.js V2

const img = await Page.captureScreenshot({format: 'png', fromSurface: true}); 
     //EXPOSE 'img' to parent via cp.stdout - How do I do this part? 
    }); 

答えて

1

することができますメッセージを送信するfork()

server.jsここ

const { fork } = require('child_process'); 
app.get('/search', function (req, res) { 
    const forked = fork('app.js'); 
    forked.on('message', (data) => { 
     uploadImage(data.imageURL); // It will be send by parent. 
    });  ... 
}); 

app.js

const img = await Page.captureScreenshot({format: 'png', fromSurface: true}); 
fs.writeFile('./screenshot.png', img.data, 'base64', function (err) { 
    if (err) { 
     console.log(err); 
    } 
    process.send({ imageURL: './screenshot.png' }); //You can send any data from here. 
}); 

あなたのための素晴らしいチュートリアルです。

https://medium.freecodecamp.org/node-js-child-processes-everything-you-need-to-know-e69498fe970a

私はそれはあなたを助け願っています。

+0

ありがとうございました。 – NutellaAddict

関連する問題