Я хочу распечатать сообщение, когда файл, который я просматриваю, изменился. Я могу сделать это с помощью console.log
, но я не мог понять, как это сделать, используя response.write
или аналогичные функции.Node.js просматривает файл
var counter = 0;
const
http = require('http'),
fs = require('fs'),
filename = process.argv[2];
var server = http.createServer(function(request, response) {
response.writeHead(200, { 'Content-Type' : 'text/plain' });
counter = counter + 1;
response.end('Hello client ' + Math.round(counter/2));
});
server.on('listening', function() {
var watcher = fs.watch(filename, function(){
console.log('The file ' + filename + ' has just changed.');
});
});
server.listen(8080);
Кроме того, причина, почему я сделал это потому, что Math.round(counter/2)
счетчика увеличивается на 2 каждый раз, когда клиент подключен. Мне было интересно, почему это происходит, и если есть лучшая техника для решения этой проблемы.
Таким образом, если пользователь подключен и после того, что файл был изменен это не представляется возможным, чтобы создать новый ответ без пользователя отправив новый запрос? – Barte
Поскольку вы вызываете 'response.end()', вы сразу отправляете все данные пользователю. Вы можете использовать 'response.write()' (https://nodejs.org/api/http.html#http_response_write_chunk_encoding_callback), чтобы записать куски данных, которые сохраняли бы это соединение и продолжали отправлять данные в один и тот же ответ, но это кажется странным. –