2013-05-28 61 views
0

我正在通過TCP在nodejs中接收大量數據。我不擅長JavaScript,並認爲我應該尋求幫助。在javascript中處理TCP數據

基本上,我得到一大塊以\ 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'); 

但現在數據塊進來大塊!我應該如何處理大塊以將其分解爲分割大小以供處理?

回答

2

如果您想在接收它們時處理每條線,可以使用carrier模塊,該模塊將回收接收到的線路的功能。它的實現不是火箭科學,它只是讀取每個塊,並將它們添加到緩衝區,直到找到新行。然後它獲取內容,直到第一個新行和回調函數。它繼續前進,直到以前的數據中沒有新行。之後,您可能會留下一些數據,並且會一直保留,直到接收到新的數據塊並且它會像這樣繼續。

這裏是一個快速的實現:

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); 
+0

這個作品!再次感謝! – extensa5620