node.js中的以下代码不会记录括号内的所有传入数据,而是将数据分成块。因此,例如,如果输入数据是ABCDEF ... XYZ,则将数据记录为[ABC] [DEF] ... [XYZ]而不是[ABCDEF ... XYZ]。当然,数据要大得多,字母表只是一个例子。
我该如何写这个,以便所有传入的数据都记录在括号内而不是部分?
chatServer.on('connection', function(client)
{
client.on('data', function(data)
{
console.log('[' + data.toString() + ']');
})
})
答案 0 :(得分:8)
您的数据是否以数据包形式到达,因此(在这种情况下)您应该将数据包连接到您在函数外部定义的变量。
buffer = '';
chatServer.on('connection', function(client)
{
client.on('data', function(data)
{
buffer += data.toString();
})
});
console.log('[' + buffer + ']');
答案 1 :(得分:4)
就像matthewdavidson所说的那样,您正在订阅发送的每个“数据块”而不是整个消息。您更有可能想要在函数内的闭包中捕获数据并仍然异步响应。请尝试以下方法:
chatServer.on('connection', function(client)
{
var buffer = '';
client.on('data', function(data)
{
buffer += data;
})
client.on('end', function(){
console.log('[' + buffer + ']');
})
});