2012-05-04 38 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/"); 

編輯:我進一步縮小了它。事實證明,如果我這樣做:

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

它的作品沒關係。所以uri.split("=")的輸出一定不是我所期望的。

+0

如果您使用[Wireshark](http://en.wikipedia.org/wiki/Wireshark)觀看流量,請執行以下操作:你看到尾隨ne wlines?你需要發送'\ r \ n'而不是'\ n'嗎? – sarnold

+0

不,我通過發送\ n在另一個應用程序中工作,所以我知道這就是我需要的。 – David

回答

-2

我想出了問題所在。出於某種原因,瀏覽器在我的請求後正在向頁面發送附加請求。我只是過濾了某種格式的請求並修復了它。

+2

我不這麼認爲。這個問題的解決方案就是@Brad上面提到的。 – Futur

8

我確定新線路在那裏,但當您發送Content-Type作爲text/html時,您不會看到它。在HTML中,\n就是其他空格,並且被視爲這樣。改爲使用text/plain

+0

哦。好吧,現在我在客戶端的瀏覽器上看到它。必須有其他一些問題。謝謝。 – David

4

由於內容類型爲 'text/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

按內容類型您還可以使用\ r將返回輸入 發送到客戶端瀏覽器