Node.js - как сделать простое обновление текущей страницы?

Я очень новичок в node.js, но на самом деле есть только одна простая вещь, которую я пытаюсь достичь, изучая язык.

Я бы хотел создать веб-страницу, где по коду в конкретном "div" можно "горячо" навестить пользователей, просматривающих эту страницу. (т.е. div содержит некоторый текст, но затем изображение заменяет его.) В идеале, своп будет выполняться вручную администратором веб-страницы одним нажатием кнопки или некоторым кодом, запущенным на сервере или что-то в этом роде. Регулярные зрители на веб-странице не смогут этого сделать - они видят только живые изменения на странице.

реальный пример:

живая интернет-трансляция вне эфира, поэтому "div" содержит текст "вне эфира". живая горячая сводка кода происходит, когда трансляция идет в эфире, а зрители веб-страницы теперь видят передатчик html5 в "div" .

Какой самый простой способ сделать это для новичка node.js?

Большое спасибо:)

Ответ 1

Взгляните на Socket.IO http://socket.io/#how-to-use

когда сервер решает широковещать использование изменений:

io.sockets.emit('update-msg', { data: 'this is the data'});

на клиенте сначала подключите socket.io, а затем дождитесь события "update-msg" и обновите свой dom:

var socket = io.connect('http://localhost');
socket.on('update-msg', function (msg) {
    console.log(msg);
    $('#mydiv').html(msg.data)
});

Ответ 2

Я создал систему/методологию для обновления интерфейса (горячая перезагрузка) с использованием RequireJS и Node.js. Я убедился, что это работает как с Реактивом, так и с Магией. Вы можете прочитать об этом здесь:

https://medium.com/@the1mills/hot-reloading-with-react-requirejs-7b2aa6cb06e1

основные шаги, связанные с этим:

  • gulp.js наблюдатели прослушивают изменения файловой системы.
  • сервер socket.io в gulpfile отправляет сообщение всем клиентам браузера с измененным файлом
  • клиент удаляет кеш, представляющий этот файл/модуль, и повторно требует он (используя AJAX, чтобы вытащить его из файловой системы сервера)
  • front-end приложение настроено/предназначено для переоценки всех ссылок к модулям, которые он хочет перезагрузить, в этом случае только JS просмотров, шаблонов и CSS доступны для горячей перезагрузки - маршрутизатора, контроллеры, хранилища данных (макеты и модели) не являются настроен еще. Я подозреваю, что все файлы могут быть перезагружены единственным исключением является хранилище данных.