2012-05-04 14 views
5

Soy nuevo en node.js y estoy intentando escribir un programa que recibe solicitudes http y reenvía los contenidos a través de un socket. En el otro extremo del socket, hay un sistema de paginación que necesita mensajes terminados con un nuevo carácter de línea. Hasta ahora, funciona bien, excepto que hay un mensaje adicional enviado con los contenidos: undefined.¿Cómo agregar un nuevo carácter de línea en node.js?

Cuando imprime el contenido del mensaje de buscapersonas en el navegador del cliente, no parece haber una nueva línea. ¿Lo estoy haciendo bien?

sys = require("sys"), 
http = require("http"), 
url = require("url"), 
path = require("path"), 
net = require("net"); 

socket = new net.Socket(); 
socket.connect(4000, '192.168.0.105'); 

var httpServer = http.createServer(function(request, response) { 
    var uri = String(url.parse(request.url).query); 
    var message = uri.split("="); 
    var page = 'FPG,101,0,3!A' + message[0] + '\n'; 
    response.writeHead(200, {"Content-Type":"text/html"}); 
    response.write('sending message: ' + page + " to pager"); 
    response.end(); 
    socket.write(page); 
}).listen(8080); 

sys.puts("Server running at http://localhost:8080/"); 

EDITAR: He reducido aún más. Resulta que si lo hago:

var page = 'FPG,101,0,3!A' + 'hello' + '\n'; 

Funciona bien. Entonces la salida de uri.split("=") no debe ser lo que estoy esperando.

+0

Si mira el tráfico con [Wireshark] (http://en.wikipedia.org/wiki/Wireshark), haga ves ne atras wlines? ¿Necesita enviar '\ r \ n' en lugar de simplemente' \ n'? – sarnold

+0

No, lo tengo trabajando en otra aplicación simplemente enviando \ n, así que sé que eso es todo lo que necesito. – David

Respuesta

-2

Descubrí cuál era el problema. Por algún motivo, el navegador enviaba una solicitud adicional a la página inmediatamente después de mi solicitud. Acabo de filtrar las solicitudes con un formato determinado y eso lo solucionó.

+2

no lo creo. la solución al problema es lo que @Brad mencionó anteriormente. – Futur

8

Estoy seguro de que la nueva línea está allí, pero no la verá cuando envíe su Content-Type como text/html. En HTML, \n es solo otro espacio en blanco, y se trata como tal. Use text/plain en su lugar.

+0

Oh. De acuerdo, ahora lo estoy viendo en el navegador del cliente. Debe haber algún otro problema. Gracias. – David

-2

Considere usar \\n en lugar de \n para la nueva línea.

4

Dado que el tipo de contenido es 'text/html', podemos usar sin problemas romper statement.Just como esto

res.write('hello'+'</br>'); 
res.write('nice to meet you'); 

Puede probar este código en el nodo:

var http = require('http'); 

http.createServer(function (req, res) { 

res.writeHead(200, { 'Content-Type': 'text/html' }); 
res.write('hello,this is saikiran'+'</br>'); 
res.end('nice to meet you'); 

}).listen(process.env.PORT || 8080); 
console.log('server running on port 8080'); 
0

De acuerdo con el tipo de contenido de texto/normal, también puede usar \ r para enviar una entrada de devolución al navegador del cliente

Cuestiones relacionadas