2012-05-04 13 views
5

Sono nuovo su node.js e sto provando a scrivere un programma che riceve richieste HTTP e inoltra il contenuto attraverso un socket. All'altra estremità del socket c'è un sistema di paging che ha bisogno di messaggi terminati con un nuovo carattere di linea. Finora, funziona bene, tranne che c'è un messaggio extra inviato con il contenuto: undefined.Come aggiungere un carattere di nuova riga in node.js?

Quando si stampa il contenuto del messaggio del cercapersone nel browser del client, non sembra esserci una nuova riga. Lo sto facendo bene?

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/"); 

MODIFICA: l'ho ristretto ulteriormente. Si scopre che se faccio:

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

Funziona bene. Quindi l'output di uri.split("=") non deve essere quello che mi aspetto.

+0

Se guardi il traffico con [Wireshark] (http://en.wikipedia.org/wiki/Wireshark), fai vedi trailing ne wlines? Hai bisogno di inviare '\ r \ n' invece di solo' \ n'? – sarnold

+0

No, ho funzionato in un'altra applicazione semplicemente inviando \ n, quindi so che è tutto ciò di cui ho bisogno. – David

risposta

-2

Ho capito qual era il problema. Per qualche motivo il browser inviava una richiesta aggiuntiva alla pagina subito dopo la mia richiesta. Ho appena filtrato le richieste con un determinato formato e l'ho risolto.

+2

non penso. la soluzione al problema è ciò che @Brad ha menzionato sopra. – Futur

8

Sono sicuro che la nuova linea è lì, ma non la vedrai quando invii il tuo Content-Type come text/html. In HTML, lo \n è solo un altro spazio bianco e viene trattato come tale. Utilizzare invece text/plain.

+0

Oh. Ok, ora lo vedo sul browser del cliente. Ci deve essere qualche altro problema. Grazie. – David

-2

Si consiglia di utilizzare \\n anziché \n per la nuova riga.

4

Dal tipo di contenuto è 'text/html', possiamo tranquillamente usare rompere statement.Just come questo

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

Si può provare questo codice 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

Come per il tipo di contenuto di testo/semplice, puoi anche usare \ r per inviare un input di ritorno al browser del cliente

Problemi correlati