Node JS Журнал клиента TCP - PullRequest
0 голосов
/ 21 апреля 2020

Я создаю 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 ", кажется, отбрасывает узел, потому что он печатает его как знак вопроса внутри квадрат и все сбрасывает.

Мне интересно, неужели мое мнение о внезапной остановке канала связано с тем, что данные поступают быстрее, чем обрабатываются. Если да, то как мне решить эту проблему? И если это не кажется правдоподобным, есть другие идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...