节点JS TCP客户端积压

时间:2020-04-21 17:34:07

标签: node.js tcp

我正在构建一个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突然停止的信念是否是因为数据输入的速度快于处理速度。如果是这样,我该如何处理?如果这似乎不可行,还有其他想法吗?

0 个答案:

没有答案