Игра с node.js: могу ли я создать приложение CLI, которое просто отображает дату и время? - PullRequest
0 голосов
/ 05 сентября 2011

Я хотел бы посмотреть, возможно ли создать приложение CLI, которое просто отображает дату и время с помощью node.js. Пока что я только выяснил, как отправить дату и время по HTTP. Вот что у меня есть:

var sys = require('sys');
var http = require('http');

var s = http.createServer(function(req, res) {
  var now = require('datetime');
  now = new Date();
  res.writeHead(200, { 'content-type': 'text/plain' });
  setInterval(function() {
    res.write(now.toString());
    res.write("\n");
    now = new Date();
  }, 1000);
});

s.listen(8888);

Есть несколько проблем с этим. В командную строку ничего не выводится, и в браузере дата и время не обновляются, они печатаются под предыдущей распечаткой. Как я могу заставить это распечатать в командной строке, и как я могу получить это, чтобы очистить ранее напечатанный текст?

Я использую node.js 0.5.5.

Ответы [ 2 ]

1 голос
/ 06 сентября 2011

Используйте console.log для вывода данных на консоль.

Используйте Now.js для обновления клиента.

Используйте console.log('\033[2J'); для очистки зарегистрированного вывода.

Также проверьте https://github.com/joyent/node/wiki/modules#wiki-debugging на наличие хороших расширений консоли, они упрощают работу.

0 голосов
/ 05 сентября 2011

Вы можете печатать в командной строке в Node.js с помощью console.log(). Так же:

console.log(new Date());

Прямо сейчас ваш сервер Node.js отвечает только на каждый запрос. У него нет способа отправить новую информацию клиенту без запроса клиента. Простой способ заставить это работать - использовать некоторый клиентский JavaScript.

$(function() {
    // Update every 5 seconds
    setInterval(function() {
        $.ajax({
            url:"http://localhost:8888", 
            success: function(data) { $("#time").text(data); }
        });
    }, 5000);
});

Предполагается, что у вас есть элемент HTML с идентификатором времени где-то на странице.

Если вы просто хотите распечатать материал на консоль, вы можете заменить весь сценарий на вызов setInterval, например так:

setInterval(function() { console.log(new Date()); }, 5000);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...