2016-06-17 138 views
2

数据立即清空我有以下代码:节点JS TCP服务器不缓存

// Setting up the TCP: 
var server = net.createServer(function(socket) { 
console.log('Android Client connected'); 

socket.setNoDelay(true); 

socket.on('data', function(data) { 
    console.log(data.toString()); 
    var json = JSON.parse(data.toString()); 

    if(json.id == 1) { 
    socket.world = findAnEmptyWorld(); 
    socket.player = socket.world.addPlayer(json.data); 
    socket.player.socket = socket; 

    tcpClients.push(socket); 

    socket.write(JSON.stringify({id: 3, data: socket.player.toJSON()})); 
    socket.pipe(socket); 
    } 
}); 
}); 

server.listen(4444, function() { 
console.log("TCP server listening on port 4444"); 
}); 

当我写的消息时,它被保存到缓冲区中,但刷新后,才关闭服务器...什么我应该在写入后立即刷新缓冲区吗? (你可以看到我尝试“setNoDelay”为true)

+0

我玩过一个类似的代码,并观察到使用socket.write(somedata)和socket.pipe(套接字)也会触发'data'事件,所以我们得到一些数据给我们。只是好奇,你观察到同样的事情吗? –

回答

0

我只是把一个新的行字符串结束之后......什么F#^ &ķ.... 像

socket.write(JSON.stringify({id: 3, data: socket.player.toJSON()}) + "\n");