我正在构建一个Node JS TCP客户端,该客户端接收闪电数据,进行解析并将其保存为CSV。我已经弄清楚了连接/下载方面的问题,但是我遇到了一个问题,即传入的TCP数据可以在一段时间内正常工作,但是传入的一行之一将是不完整的并且会丢弃所有内容。我认为问题在于数据输入的速度快于处理和保存的速度,因此存在积压。
这是我的代码:
function cleanStringFn(string, superBad){
string = string.replace(new RegExp(superBad, 'g'), '')
.replace(new RegExp('}{', 'g'), ']]]')
.replace(new RegExp('{', 'g'), '')
.replace(new RegExp('}', 'g'), '')
return string
}
client.on('data', function(data) {
var dataString = data.toString()
var stringArray = dataString.split('{')
var superBad = stringArray[0]
var cleanString = cleanStringFn(dataString, superBad)
var cleanArray = cleanString.split(']]]')
var dataArray = []
cleanArray.map(curr=>{
var addCurly = '{' + curr + '}'
var toJSON = JSON.parse(addCurly)
dataArray.push(toJSON)
})
var unparse = Papa.unparse(dataArray)
fs.appendFile('./data/file.txt', data, (err) => {
if (err) throw err;
});
});
client.on('error', function(ex) {
console.log("handled error");
});
整个“ superBad”问题是因为来自服务器的数据如下所示: 0x00,0x00,0x00,0xC2 { “ time”:“ 2014-09-05T16:21:22.918060726Z”, “类型”:1, “纬度”:40.2352633, “经度”:26.2417332, “ peakCurrent”:2767, “ icHeight”:18211.49, “ numSensors”:6 “ eeMajor”:1128, “ eeMinor”:465, “ eeBearing”:6 }
整个“ 0x00,0x00,0x00,0xC2”东西似乎抛出了Node,因为它将它打印为正方形内的问号并抛出了所有东西。
我想知道我对Feed突然停止的信念是否是因为数据输入的速度快于处理速度。如果是这样,我该如何处理?如果这似乎不可行,还有其他想法吗?