2016-06-17 178 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");