12

我是 node.js 的新手,我正在尝试编写一个程序来接收 http 请求并通过套接字转发内容。在套接字的另一端是一个分页系统,它需要以换行符终止的消息。到目前为止,它工作正常,除了发送了一条带有内容的额外消息:undefined

当我将寻呼机消息的内容打印到客户端的浏览器时,似乎没有换行。我这样做对吗?

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

编辑:我进一步缩小了范围。事实证明,如果我这样做:

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

它工作正常。所以输出uri.split("=")一定不是我所期望的。

4

5 回答 5

14

我确定新行在那里,但是当你发送你的Content-Typeas时你不会看到它text/html。在 HTML 中,\n只是其他空格,因此被视为。改为使用text/plain

于 2012-05-04T00:21:31.213 回答
10

由于内容类型是'text/html',我们可以愉快地使用break语句。就像这样

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');
于 2013-12-11T13:41:43.000 回答
0

根据 text/plain 的内容类型,您还可以使用 \r 将返回输入发送到客户端的浏览器

于 2017-07-29T10:15:23.377 回答
-3

I figured out what the problem was. For some reason the browser was sending an additional request to the page right after my request. I just filtered for requests with a certain format and that fixed it.

于 2012-05-04T22:51:08.557 回答
-3

考虑使用\\n而不是\n换行。

于 2012-07-09T10:34:46.967 回答