2016-02-25 53 views
0

我試圖從TCP服務器向我的客戶端發送一些信息,它的格式爲JSON。我正在使用網絡模塊。當我的套接字對象發出「on data」事件時,我想將字節流轉換爲文本並用json解析它。問題是數據有時包含來自兩個獨立TCP包的數據。這發生在服務器非常快速地發送數據時。NodeJS套接字onData事件,兩個數據包在一個數據對象?

因爲我在數據字符串中有兩個JSON字符串,我不能使用解析。我可以使用字符串操作,但這似乎是一個不好的解決方案。我知道這是兩個單獨的TCP包,由wireshark證實。我該如何處理這個問題?

"use strict"; 
let net = require('net'); 
let client = new net.Socket(); 

var port = 8172; 
var host = 'localhost'; 


client.connect({port: port, host:host},() =>{ 
    console.log("Connected"); 
}); 

client.on('data',(data)=>{ 
    console.log(data.toString()); //I want to use JSON.parse() here 
}); 

回答

0

問題是流基礎結構正在處理數據,並且它不會爲每個網絡數據包發出事件。我建議你將套接字流轉換成一個轉換,使用特殊的標記來分隔消息(也許你可以在每條消息的末尾添加一個新的行字符)。或者你可以使用貢獻的包進行json流處理。 Thisthis可以給你一些想法。

相關問題