2

node.js 中的以下代码不会在括号内记录所有传入数据,而是将数据分成块。例如,如果输入数据是 ABCDEF...XYZ,它会将数据记录为 [ABC][DEF]...[XYZ] 而不是 [ABCDEF...XYZ]。当然,数据要大得多,字母表只是一个例子。

我应该如何写这个,以便所有传入的数据都记录在括号内而不是部分?

chatServer.on('connection', function(client) 
{
    client.on('data', function(data) 
    {
        console.log('[' + data.toString() + ']');
    })    
})
4

2 回答 2

8

好吧,您的数据以数据包的形式到达,因此(在这种情况下)您应该将数据包连接到您在函数外部定义的变量中。

buffer = '';

chatServer.on('connection', function(client) 
{
    client.on('data', function(data) 
    {
        buffer += data.toString();
    })    
});

console.log('[' + buffer + ']');
于 2012-06-28T01:47:39.533 回答
4

正如 matthewdavidson 所说,您订阅的是发送的每一个“块”数据,而不是整个消息。您更有可能希望在函数内的闭包中捕获数据并仍然异步响应。尝试以下操作:

chatServer.on('connection', function(client) 
{
    var buffer = '';

    client.on('data', function(data) 
    {
        buffer += data;
    })

    client.on('end', function(){
        console.log('[' + buffer + ']');
    })
});

结帐http://www.nodebeginner.org/#handling-post-requests了解更多信息

于 2012-06-28T01:57:59.777 回答