Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

224
Vistas
Object.toString() Devuelve "[datos de blob]"

Tengo un servidor http simple que se ejecuta en Node como un servicio systemd que recibe datos a través de un socket tcp (no un socket WS). Aquí está el código:

 const net = require('net'); const HOST = '0.0.0.0'; const PORT = 6968; const server = net.createServer(); server.listen(PORT, HOST); console.log('Server listening on', PORT); server.on('connection', function(sock) { console.log('CONNECTED:'); sock.on('data', function (data) { let message = data.toString().trim(); console.log('message is', message); console.log('data is', data); console.log('message type is', typeof(message)); console.log('data is', typeof(data)); }); });

Un ejemplo del tipo de datos enviados a este servidor es la siguiente cadena:

Grateful Dead^LSugaree^L005:37^L0251-001^LM\r\n

El problema específico que tengo es que "let message = data.toString().trim()" no devuelve la cadena que me enviaron. En cambio, obtendré algo que se parece a esto:

"[67B datos de blobs]"

El archivo console.log para el objeto ("datos") recibido por el servidor muestra algo como esto:

"<Búfer 44 72 61 67 67 69 6e 20 [etc.]>"

El tipo de (mensaje) es "cadena". El tipo de (datos) es "objeto".

He estado investigando esto todo el día y he intentado muchas cosas diferentes, pero nada de lo que he intentado me devolverá la cadena que estoy buscando, aunque puedo ver la cadena simplemente mirando el puerto ingresando el comando de terminal:

"socat TCP4-listen:6968,reuseaddr,fork -"

¿Alguien ve lo que estoy haciendo mal?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Aquí hay un ejemplo robado de este sitio web: https://riptutorial.com/es/node-js/example/22405/a-simple-tcp-server

 const net = require("net"); const HOST = "0.0.0.0"; const PORT = 6968; const server = net.createServer(); server.listen(PORT, HOST); console.log("Server listening on", PORT); server.on("connection", function (socket) { console.log("A new connection has been established."); // Now that a TCP connection has been established, the server can send data to // the client by writing to its socket. socket.write("Hello, client."); // The server can also receive data from the client by reading from its socket. socket.on("data", function (chunk) { console.log(`Data received from client: ${chunk.toString().trim()}.`); }); // When the client requests to end the TCP connection with the server, the server // ends the connection. socket.on("end", function () { console.log("Closing connection with the client"); }); // Don't forget to catch error, for your own sake. socket.on("error", function (err) { console.log(`Error: ${err}`); }); });
about 4 years ago · Juan Pablo Isaza Denunciar

0

En caso de que alguna persona del futuro tropiece con esto, el problema era (es) que soy un idiota. La solución simple fue usar "mensaje" para crear una matriz:

 let dataArray = message.split('\f');

(Supe que los datos que me enviaban usaban "\f" como delimitador).

Entonces podría usar la matriz para procesar los datos como quisiera.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda