2012-05-04 4 views
5

Я новичок в node.js, и я пытаюсь написать программу, которая получает HTTP-запросы и пересылает содержимое через сокет. На другом конце сокета есть пейджинговая система, которая нуждается в сообщениях, заканчивающихся новым символом строки. Пока все работает нормально, за исключением дополнительного сообщения, отправленного с содержимым: undefined.Как добавить новый символ строки в node.js?

Когда я печатаю содержимое сообщения пейджера в браузере клиента, не появляется новая строка. Правильно ли я это делаю?

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

EDIT: Я сузил его дальше. Оказывается, если я это сделаю:

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

Все работает нормально. Поэтому выход uri.split("=") не должен быть тем, что я ожидаю.

+0

Если вы просматриваете трафик с помощью [Wireshark] (http://en.wikipedia.org/wiki/Wireshark), сделайте вы видите trailing ne wlines? Вам нужно отправить '\ r \ n' вместо' \ n'? – sarnold

+0

Нет, я получил эту работу в другом приложении, просто отправив \ n, поэтому я знаю, что это все, что мне нужно. – David

ответ

-2

Я понял, в чем проблема. По какой-то причине браузер отправил дополнительный запрос на страницу сразу после моего запроса. Я просто отфильтровал запросы с определенным форматом и исправил их.

+2

Я так не думаю. решение проблемы - это то, о чем @Brad упомянул выше. – Futur

8

Я уверен, что новая линия есть, но вы не увидите ее, когда вы отправляете Content-Type как text/html. В HTML \n является просто другим пробелом и рассматривается как таковой. Вместо этого используйте text/plain.

+0

Ох. Хорошо, теперь я вижу его в браузере клиента. Должна быть какая-то другая проблема. Благодарю. – David

-2

Рассмотрите возможность использования \\n вместо \n для новой строки.

4

Поскольку тип контента является «текст/html», мы можем спокойно использовать перерыв statement.Just как этот

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

Вы можете попробовать этот код в узле:

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

В соответствии с типом контента text/plain, вы также можете использовать \ r для отправки обратного входа в браузер клиента