1. 程式人生 > >Nodejs簡單的套接字連線不工作

Nodejs簡單的套接字連線不工作

每2秒客戶機請求的資料app.get("/query_data"..我是連線到一個特定的IP地址+埠。

連線後,我傳送一個字串到這個地址來接收資料。 這工作得很好,但只有一次。

var socket = new net.Socket();
app.get("/query_data", function (req, res) {
socket.connect(2711, '192.168.1.173', function (err) {
if (err) {
console.log(err);
}
else {
socket.write("d"); // send "d" to trigger socket.on("data")
}
});

socket.on('data', function (data) {
res.send(data);
});
});
我收到錯誤訊息:

錯誤(ERR_HTTP_HEADERS_SENT):不能設定標題後傳送 到客戶端
然而,當我把var socket = new net.Socket();內部app.get()它的工作原理。

app.get("/query_data", function (req, res) {
var socket = new net.Socket();
socket.connect(2711, '192.168.1.173', function (err) {
if (err) {
console.log(err);
}
else {
socket.write("d");
}
});

socket.on('data', function (data) {
res.send(data);
});
});
這是為什麼呢? 我不希望建立一個新的套接字每次客戶端從伺服器請求資料。

客戶端,它的包裝在2秒setTimeout()功能:

$.get("/query_data", function (data) {
data = data.replace(/[[]&]+|nan/g, 'null');
console.log(JSON.parse(data));
(....)
});