2012-05-04 21 views
5

Tôi mới sử dụng node.js và tôi đang cố viết chương trình nhận yêu cầu http và chuyển tiếp nội dung thông qua một ổ cắm. Ở đầu kia của socket là một hệ thống phân trang cần thông báo kết thúc bằng một ký tự dòng mới. Cho đến nay, nó hoạt động tốt, ngoại trừ có một tin nhắn bổ sung được gửi với các nội dung: undefined.Làm cách nào để nối thêm ký tự dòng mới trong node.js?

Khi tôi in nội dung của tin nhắn máy nhắn tin đến trình duyệt của khách hàng, có vẻ như không phải là một dòng mới. Tôi làm đúng chứ hả?

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: Tôi đã thu hẹp hơn nữa. Nó chỉ ra rằng nếu tôi làm:

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

Nó hoạt động tốt. Vì vậy, đầu ra của uri.split("=") không được là những gì tôi mong đợi.

+0

Nếu bạn xem lưu lượng truy cập bằng [Wireshark] (http://en.wikipedia.org/wiki/Wireshark), hãy bạn thấy dấu vết ne wlines? Bạn có cần gửi '\ r \ n' thay vì chỉ' \ n' không? – sarnold

+0

Không, tôi đã làm việc này trong một ứng dụng khác bằng cách chỉ gửi \ n, vì vậy tôi biết đó là tất cả những gì tôi cần. – David

Trả lời

-2

Tôi đã tìm ra vấn đề là gì. Vì lý do nào đó, trình duyệt gửi yêu cầu bổ sung tới trang ngay sau yêu cầu của tôi. Tôi chỉ lọc cho các yêu cầu với một định dạng nhất định và sửa nó.

+2

tôi không nghĩ vậy. giải pháp cho vấn đề là những gì @Brad đã đề cập ở trên. – Futur

8

Tôi chắc chắn dòng mới có ở đó, nhưng bạn sẽ không thấy dòng này khi bạn gửi Content-Typetext/html. Trong HTML, \n chỉ là khoảng trống khác và được xử lý như vậy. Sử dụng text/plain để thay thế.

+0

Ồ. Ok, bây giờ tôi thấy nó trên trình duyệt của khách hàng. Phải có một số vấn đề khác. Cảm ơn. – David

-2

Cân nhắc sử dụng \\n thay vì \n cho dòng mới.

4

Kể từ kiểu nội dung là 'text/html', chúng tôi hạnh phúc có thể sử dụng phá vỡ statement.Just như thế này

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

Bạn có thể thử mã này trong nút:

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

Theo kiểu nội dung của văn bản/đồng bằng, bạn cũng có thể sử dụng \ r để gửi đầu vào trả lại đến trình duyệt của khách hàng

Các vấn đề liên quan