Каждые 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));
(....)
});