Node.js TCP socket waits seconds before polling? (net.createServer)

I have a very simple TCP socket in Node.js. It connects to a device that sends data back in XML format. There is a C# program that does this same trick, but I had to build it in Node.js.

So, when the device sends a message, I'm getting the response about 5 seconds later! Where the C# program gets it 1 or 2 seconds later.

It looks like the 'tcp socket' has a specific polling frequency or some kind of 'wait function'. Is that even possible? Everytime an incoming message displays. It also display's the exit message of "sock.on('close')"

It seems that after 5 seconds the 'server' automaticly closes. See bottom lines "console.log('[LISTENER] Connection paused.');" After that, the incoming message gets displayed correctly.

What is wrong with my code?

// Set Node.js dependencies
var fs = require('fs');
var net = require('net');

// Handle uncaughtExceptions
process.on('uncaughtException', function (err) {
    console.log('Error: ', err);
    // Write to logfile
    var log = fs.createWriteStream('error.log', {'flags': 'a'});
    log.write(err+'\n\r');

});

/*  
    -------------------------------------------------
    Socket TCP : TELLER
    -------------------------------------------------
*/
var oHOST = '10.180.2.210';
var oPORT = 4100;

var client = new net.Socket();
client.connect(oPORT, oHOST, function() {

            console.log('TCP TELLER tells to: ' + oHOST + ':' + oPORT);

            // send xml message here, this goes correct!
            client.write(oMessage);                     
});

// Event handler: incoming data
client.on('data', function(data) {
    // Close the client socket completely
    client.destroy();
});

// Event handler: close connection
client.on('close', function() {
    console.log('[TELLER] Connection paused.');
});     

/*  
    -------------------------------------------------
    Socket TCP : LISTENER
    -------------------------------------------------
*/
var iHOST = '0.0.0.0';
var iPORT = 4102;

// Create a server instance, and chain the listen function to it
var server = net.createServer(function(sock) {

    // We have a connection - a socket object is assigned to the connection automatically
    console.log('TCP LISTENER hearing on: ' + sock.remoteAddress +':'+ sock.remotePort);

    // Event handler: incoming data
    sock.on('data', function(data) {
        console.log('Message: ', ' '+data);
    });

    // Event handler: close connection
    sock.on('close', function(data) {
        console.log('[LISTENER] Connection paused.');
    });

}).listen(iPORT, iHOST);    

client.write() does not always transmit data immediately, it will wait until buffers are full before sending the packet. client.end() will close the socket and flush the buffers.

You could try this: http://nodejs.org/api/net.html#net_socket_setnodelay_nodelay

Your 5 second delay does seem a bit weird, though.

So within the "TELLER" I had to write "sock.write(data);" inside the "sock.on('data', function(data)" event.

It works now. Thanks Jeremy and rdrey for helping me in the right direction.