2012-01-22 37 views
5

estoy tratando de eliminar una toma de corriente antes de enviar la siguiente parte de los datos:Node.js: cómo limpiar el socket?

var net = require('net'); 

net.createServer(function(socket) { 
    socket.on('data', function(data) { 
     console.log(data.toString()); 
    }); 
}).listen(54358, '127.0.0.1'); 

var socket = net.createConnection(54358, '127.0.0.1'); 

socket.setNoDelay(true); 
socket.write('mentos'); 
socket.write('cola'); 

Esto, sin embargo, no funciona a pesar de la opción de setNoDelay, por ejemplo, imprime "mentoscola" en lugar de "mentos \ ncola". ¿Cómo puedo solucionar esto?

Respuesta

5

Mirando la api WriteableStream, y el ejemplo asociado parece que debe establecer sus saltos o delimitadores usted mismo.

exports.puts = function (d) { 
    process.stdout.write(d + '\n'); 
}; 

Debido a que su socket es una corriente, los datos serán escritos/leídos sin su control directo, y #write no va a cambiar sus datos o asumir que estés significa romper entre escrituras, ya que podría ser la transmisión de una gran cantidad de información sobre el zócalo y podría querer establecer otros delimitadores.

Definitivamente no soy un experto en esta área, pero esa parece ser la respuesta lógica para mí.

Editar: Este es un duplicado de Nodejs streaming, y la conclusión no era la misma que la respuesta que se especifica: trabajar con flujos no es la línea por línea, establecer su propio delimitadores.

0

Quizás todos los datos escritos en la misma marca se envíen como un lote.

Tal vez en el lado de recepción, el nodo combinará los segmentos de datos separados antes de emitir el evento de datos.

+7

tal vez, tal vez, ... – nalply

Cuestiones relacionadas