我是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("=")
的输出不能是我所期望的。
答案 0 :(得分:12)
我确定新行已经存在,但是当您将Content-Type
作为text/html
发送时,您将不会看到它。在HTML中,\n
只是其他空格,并被视为这样。请改用text/plain
。
答案 1 :(得分:8)
由于内容类型为'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');
答案 2 :(得分:0)
根据text / plain的内容类型,您还可以使用\ r来发送返回输入 到客户端的浏览器
答案 3 :(得分:-3)
我弄清楚问题是什么。出于某种原因,浏览器在我的请求之后立即向页面发送了一个额外的请求。我刚刚过滤了某种格式的请求并修复了它。
答案 4 :(得分:-3)
考虑使用\\n
代替\n
换行。