【发布时间】:2014-08-15 03:42:04
【问题描述】:
我正试图让我的程序在退出之前将一个充满 JSON 数据包的数组的内容写入初始化时指定的文本文件。但是,程序坚持只将单个数据包写入文件,而不是写入应写入的数百个数据包,而不是写入整个数组。我有一个遍历数组的 for 循环,我在数组中的每个元素上调用 stream.write(messageArray[i])。
该数组由数据报套接字接收的 JSON 填充,它维护最后 80 秒流量的滚动窗口。这意味着该数组将始终只保存最后 80 秒的数据。这是一些代码。我省略了时移,因为我知道它有效。
var filename = String(process.argv[2]);
var dgram = require('dgram');
var server = dgram.createSocket('udp4');
var fs = require('fs');
var stream = fs.createWriteStream(filename);
var messageArray= [];
server.on('message', function(message, rinfo){
try{
messageArray.push(JSON.stringify(JSON.parse(message)));
}
catch(e)
{console.log(e); console.log(message);}
total++;
});
server.on('listening', function(){
var address = server.address();
console.log('server listening on ' + address.address + ':' + address.port);
});
server.bind(5139);
function exitHandler(options, err){
if(err) console.log(err.stack);
if(options.exit){
stream.on('error', function(err){
console.log(err.stack);
});
var i = 0;
for(i; i< messageArray.length; i++)
stream.write(messageArray[i] + ",\r\n");
stream.end();
process.exit();
}
}
process.on('SIGINT', exitHandler.bind(null, {exit:true}));
process.on('uncaughtException', exitHandler.bind(null , {exit:true}));
有谁知道问题出在哪里?
【问题讨论】:
标签: arrays json node.js streamwriter