Handling Node.js socket data

15,918

According to the documentation, you must specify an encoding to get a String instead of a Buffer:

Event: 'data'#
Buffer object
Emitted when data is received. The argument data will be a Buffer or String. Encoding of data is set by socket.setEncoding().

You could configure the socket to get the data in UTF-8, for example, with:

socket.setEncoding('utf8');
Share:
15,918
Cheruiyot Felix
Author by

Cheruiyot Felix

Cloud and Productivity Specialist

Updated on June 12, 2022

Comments

  • Cheruiyot Felix
    Cheruiyot Felix almost 2 years

    I have server receiving data from a client [GPS Device]. I have problem presenting the data (i.e the results obtained from the client) in a readable format. Below are the things I have tried.

    Doing:

    console.log(data)
    

    I get

    <Buffer d0 d7 3d 00 c4 56 7e 81>
    

    Also tried

     console.log(data.toString())
    

    But I get unwanted results:See below:

    ��A�V~�
    

    Here is my full code:

    var net = require('net');
    var fs = require('fs');
    
    var server = net.createServer(function (socket) {
      console.log('Server started: Waiting for client connection ...');
      console.log('Client connected:port,address: '+socket.remotePort,      socket.remoteAddress);
      socket.on('data', function (data) {
            var date = new Date();
            var today = date.getDate()+'_'+date.getMonth();
            fs.appendFile(today+'_log.txt', data, function (err) {
              if (err) throw err;
                console.log(data.toString())
    
        });
     });
    });
    
    server.listen(my_port, my_ip);
    

    Thanks for your input.