0
我創建了一個web服務器,它通過觸發ls -l來顯示目錄和文件列表。由於我是node.js環境的新手,我不知道如何爲異步代碼結束HTTP Body Response。 以下是我的代碼 -如何在node.js中結束HTTP響應正文
var terminal = require('child_process').spawn('bash');
var http = require('http');
var s = http.createServer(function (req, res) {
res.writeHead(200, {'content-type': 'text/plain'});
terminal.stdout.on('data', function (data) {
res.write('stdout: ' + data);
});
setTimeout(function() {
res.write('Sending stdin to terminal');
terminal.stdin.write('ls -l\n');
res.write('Ending terminal session');
terminal.stdin.end();
}, 1000);
terminal.on('exit', function (code) {
res.write('child process exited with code ' + code + '\n');
res.end("Response Ended");
});
});
s.listen(8000);
此代碼適用於服務第一個請求。但在服務第二個請求時出現錯誤:「結束後寫入」。 這是怎麼回事?我該如何糾正這一點?
如果你不想重新發明輪子,你應該看看connect和/或[express](http://expressjs.com/)。順便說一句,你應該格式化你的代碼,以便我們可以閱讀它 – hgoebl