Send out real time data to webclients error trapping

Trying to send data from a serial device to web clients. I am using a serial to network proxy, ser2Net to make the data available to a server that acts on the data and sends a manipulated version of the data to web clients. The clients specify the location of the ser2net host and port. The core of this action is coded in node.js as shown here:

function getDataStream(socket, dataSourcePort, host) {
    var dataStream = net.createConnection(dataSourcePort, host),
        dataLine = "";

    dataStream.on('error', function(error){
        socket.emit('error',{message:"Source not found on host:"+ host + " port:"+dataSourcePort});
        console.log(error);
    });

    dataStream.on('connect', function(){
        socket.emit('connected',{message:"Data Source Found"});
    });

    dataStream.on('close', function(){
        console.log("Close socket");     
    });

    dataStream.on('end',function(){
        console.log('socket ended');
        dataConnection.emit('lost',{connectInfo:{host:host,port:dataSourcePort}});
    });

    dataStream.on('data', function(data) {

        // Collect a line from the host
        line += data.toString();
        // Split collected data by delimiter
        line.split(delimiter).forEach(function (part, i, array) {
        if (i !== array.length-1) { // Fully delimited line.
            //push on to buffer and emit when bufferSendCommand is present
            dataLine = part.trim();
            buffer.push(part.trim());
            if(part.substring(0, bufferSendCommand.length) == bufferSendCommand){
                gotALine.emit('new', buffer);
                buffer=[];
            }
        }
        else {
          // Last split part might be partial. We can't announce it just yet.
          line = part;
        }
      });
    });
    return dataStream; 
}


io.sockets.on('connection', function(socket){

    var stream = getDataStream(socket, dataSourcePort, host);

    //dispense incoming data from data server
    gotALine.on('new', function(buffer){
        socket.emit('feed', {feedLines: buffer});
    });

    dataConnection.on('lost', function(connectInfo){
        setTimeout(function(){
            console.log("Trying --- to reconnect ");
            stream = getDataStream(socket, connectInfo.port, connectInfo.host);
        },5000);
    });

    // Handle Client request to change stream 
    socket.on('message',function(data) {
        var clientMessage = JSON.parse(data);
        if('connectString' in clientMessage
            && clientMessage.connectString.dataHost !== ''
            && clientMessage.connectString.dataPort !== '') {
            stream.destroy();
            stream = getDataStream(socket,
                clientMessage.connectString.dataPort,
                clientMessage.connectString.dataHost);
        }
    });    
});

This works well enough until the serial device drops off and ser2net stops sending data. My attempt to catch the end of the socket and reconnect is not working. The event gets emitted properly but the setTimeout only goes once. I would like to find a way to keep on trying to reconnect while sending a message to the client informing or retry attempts. I am node.js newbie and this may not be the best way to do this. Any suggestions would be appreciated.

Ok I think I figured it out in the dataStream.on('data' ... I added a setTimeout

clearTimeout(connectionMonitor);
connectionMonitor = setTimeout(function(){doReconnect(socket);}, someThresholdTime);

The timeout executes if data stops coming in, as it is repeatedly cleared each time data comes in. The doReconnect function keeps trying to connect and sends a message to the client saying something bad is going on.