我正在尝试使用 Node.js HTTP模块创建服务器,其中服务器从客户端获取作为JSON数据的并发请求,将其存储到JSON文件中,然后从文件中读回并将其作为回复发送给客户。
我有进步,因为你可以看到我的下面的代码。
问题
1)在我的代码中我关闭了打开的文件..在这里,"文件成功关闭"首先是log,然后是" Saved"日志消息。 fs.open创建fd和一个线程,同时处理fs.writeFile,其他执行fs.close 如何以正确的方式编写代码?
2)如何让客户端向我在这里创建的服务器发出并发的http请求。我不想使用Express 。我想先学习基础知识。
var http = require('http');
var fs = require('fs');
var server = http.createServer(function (request, response) {
var body = '';
request.on('data', function (data) {
body += data;
});
request.on('socket', function (){
var start = new Date();
console.log(start);
});
request.on('end',function(){
var clientData = body;
fs.open('jsonData.json', 'r+', function(err, fd) {
if(err){
fs.writeFileSync('jsonData.json', clientData+"\n", function(err) {
if(err){return console.error(err);}
console.log("file created...!!\n");
});
}
else{
//append data
fs.appendFile('jsonData.json', clientData+"\n", function (err) {
if (err) {return console.error(err);}
console.log('Saved!');
});
if(fd>=1){
fs.close(fd, function(err){
if (err){
console.log(err);
}
console.log("File closed successfully.");
});
}
}
});
//open and read to send response
response.writeHead(200, 'OK', {'Content-Type': 'text/html'});
response.end('Data received.');
});
}).listen(8080,'127.0.0.1',function(){
console.log("listening to server at http://localhost:8080");
});