#javascript #node.js #reload
#javascript #node.js #перезагрузка
Вопрос:
У меня есть приложение, в котором я отправляю файл JSON на сервер. Файл JSON может измениться, поэтому я хочу, чтобы он перезагружал сервер каждый раз, когда он меняется. Но когда я помещаю location.reload(), это выдает мне сообщение об ошибке, что местоположение не определено.
Что я должен использовать вместо location.reload()
Комментарии:
1. Сервер не может сам по себе изменять отображение браузера. Они являются отдельными компьютерами и обычно не подключены. Вы можете либо регулярно обновлять веб-страницу вашего браузера
location.reload()
с помощью самой веб-страницы (не на вашем сервере), либо отправлять ajax-вызов на веб-сервер, периодически запрашивая сервер, есть ли новое содержимое. Или вы можете установить непрерывное соединение WebSocket с сервером, и тогда сервер сможет отправлять вам новое содержимое всякий раз, когда оно поступает, а затем ваш Javascript браузера сможет отображать это новое содержимое.2. Ваш сервер сам должен будет отслеживать файл JSON и обновлять его состояние всякий раз, когда оно изменяется.
Ответ №1:
Решение, которое я делал раньше, заключается в использовании nodemon
(вместо node) для запуска вашего приложения node. Nodemon предназначен для перезапуска приложения узла при обнаружении изменений в файловой системе. Итак, если у вас есть узловое приложение, которое записывает файл JSON на диск, в ту же папку, что и узловое приложение, то оно перезапустится при изменении файла.
Комментарии:
1. Я тоже использую это, но чего я пытаюсь добиться, так это каждые несколько часов обновлять мой браузер на локальном хостинге, ничего не делая. Так что запишите это в коде. Точно так же, как вы можете запустить location.reload на своей обычной странице javascript, и она перезагружает браузер,
Ответ №2:
Вы можете использовать что-то вроде «навсегда».
npm install forever
Затем измените json пакета
"start": "forever start index.js"
затем всякий раз, когда вы хотите принудительно перезапустить, вы просто вызываете
process.exit(1);
это попытается принудительно перезапустить ваш сервер
Комментарии:
1. Но есть ли способ без установки чего-либо обновить веб-сайт json api в функции
2. Другим решением было бы вызвать ошибку прерывания на сервере … что-то вроде необработанного отклонения обещания. Это также означает, что ваш devops правильно настроен для перезапуска, когда он становится неработоспособным. В любом случае, это не идеальное решение, но пропускает часть установки.
3. Зачем перезапускать сервер только для того, чтобы обновить какое-то состояние из файла JSON? Гораздо лучше просто запрограммировать сервер для мониторинга файла JSON и обновления его внутреннего состояния при изменении этого файла.