0

我在nodejs中通过TCP接收一大块数据。我不擅长 javascript,并认为我应该寻求帮助。

基本上,我得到一大块以 \r\n 结尾的数据。

Data chunk
Door1,10:02:24\r\n
Door1,10:05:25\r\n
Door2,10:11:02\r\n
Door1,10:24:34\r\n
etc.

我不知道如何处理这个。最初我认为每个数据块只包含一行。那是我做了一个

newData = data.split('\r\n');

但是现在数据块是大块的!我应该如何处理大块以将其分解为拆分大小的位以进行处理?

4

1 回答 1

2

如果您想在收到每一行时处理它们,您可以使用运营商模块,该模块将在收到行时回调一个函数。

它的实现不是火箭科学,它只是读取每个块,并将它们添加到缓冲区,直到找到新行。然后它获取内容直到第一个新行和回调函数。它一直持续到之前的数据中没有新行为止。之后,您可能会留下一些数据,这些数据会一直保留到收到新的块为止,并且会像这样继续下去。

这是一个快速实现:

var net     = require('net'),
    carrier = require('carrier');

var server = net.createServer(function(conn) {
  var my_carrier = carrier.carry(conn);
  my_carrier.on('line',  function(line) {
    console.log('got one line: ' + line);
  });
});
server.listen(4001);
于 2013-05-28T19:33:57.917 回答