Автор оригинала: FreeCodeCamp Community Member.
Рахат Ханна
Мир нужен все, что все быстро. Есть много потоков данных, создаваемых различными системами каждый день. Они служат при принятии решений во многих отраслях промышленности. Мониторинг и анализ в реальном времени сегодня стали очень важными сегодня. Потоки данных включают в себя мониторинг в реальном времени на трафик сайта, производительности серверов, обновлений погоды и датчиков IOT. Важно анализировать и интерпретировать этот всплеск данных, для которых интерактивные диаграммы и графики являются отличным решением.
В этой статье мы будем строить сервер Node.js, чтобы открыть API для предоставления исторических данных для метрики (в данном случае, погода в Лондоне). Он также предоставляет API для глотания новых точек данных. Мы также будем создавать приложение для интерфейса с диаграммой линии, чтобы отобразить изменения температуры в Лондонской погоде в реальном времени. Приложение, которое мы строим, будут выглядеть что-то подобное:
Регистрация для Pusher
Первый шаг для начала этого руководства – это Регистрация на толкатель Или войдите в свои существующие учетные данные, если у вас уже есть аккаунт. После входа в систему вам нужно будет создать новое приложение и выбрать ванильный JavaScript для интерфейса наряду с Node.js для задней части. Затем вы будете привезены на посадочную страницу, содержащую код «Начало работы» как для интерфейса, так и в задней части, который мы будем использовать позже в руководстве.
Node.js Сервер API для системы мониторинга и аналитики
Основные API для любых систем аналитики для любой метрики или объекта:
- INGESTION API – API для проглатывания новых точек данных для любой конкретной организации. На нашем сервере для этого поста в блоге мы сделаем API для глотания новых температурных данных в определенное время для Лондона. Этот API может быть вызван любой глобальной системой погоды или любым датчиком IOT.
- Исторические данные API – это API вернет все данные в диапазоне от этой даты. Для нашего сервера мы создадим простой API. Это вернет некоторые статические исторические данные с ограниченными точками данных для значений температуры Лондона на любой день.
Node.js Express Server Skeleton
Мы создадим базовый экспресс-сервер вместе с созданием экземпляра сервера библиотеки PUSHER. Мы создадим новую папку для нашего проекта и созданию нового файла server.js Отказ Добавьте следующий код в этот файл:
API, чтобы получить исторические данные температуры
Теперь мы добавим некоторые статические данные относительно температуры Лондона в определенное время в течение дня и храните ее в любой переменной JavaScript. Мы также выясним маршрут, чтобы вернуть эти данные всякий раз, когда кто-то вызывает его, используя HTTP Call.
API для глотания температуры температуры
Теперь мы добавим код для разоблачения API для проглатывания температуры в определенное время. Мы обнаружим API Get HTTP с температурой и временем в качестве параметров запроса. Мы проверим, что они не пустые параметры. Мы храним их, нажав в dataPoints Массив нашей статической переменной JavaScript londontempdata Отказ Пожалуйста, добавьте следующий код для server.js файл
В приведенном выше коде, кроме хранения в источнике данных, мы также проверим событие «Новая температура» На новом канале «Лондон-Темп-Диаграмма» Отказ Для каждого уникального источника данных или диаграммы вы можете создать новый канал.
Мероприятие, вызванное нашим сервером, будет обрабатываться передней частью для обновления диаграммы/графика в реальном времени. Событие может содержать все важные данные, которые таблица должна правильно отображать точку данных. В нашем случае мы будем отправлять температуру в новое время на наш интерфейс.
Строительство приложения для интерфейса с помощью Vanilla JavaScript и Chart.js
Теперь мы построим предельное приложение. Он будет отображать линейную диаграмму, представляющую изменения температуры для лондонского города в разное время в течение дня. Ключевым подходом для отображения графов в реальном времени является:
- Мы должны сделать начальный вызов AJAX, чтобы извлечь исторические данные и представлять график с существующими данными.
- Мы будем подписаться на какие-либо события для новых точек данных, хранящихся на конкретном канале.
Базовый HTML шаблон
Мы создадим новую папку под названием публичный в нашем корне на нашем проекте, а затем создать новый файл index.html В этой папке. Этот файл будет содержать основной HTML-код для рендера простого заголовка и подзаголовок с именем приложения вместе с несколькими значками. Мы также импортируем Толкатель JavaScript Библиотека от URL-адреса CDN.
Добавление библиотеки диаграмм
В приложениях JavaScript и HTML мы должны использовать SVG или Canvas для создания графических компонентов для представления математических графиков. Есть многочисленные библиотеки с открытым исходным кодом, которые могут помочь вам сделать разные типы диаграмм. К ним относятся барные диаграммы, круговые диаграммы, диаграммы линии и графики разброса.
Для нашего проекта мы выберем Chart.js Поскольку он имеет довольно простые API и оказывает надежные графики с помощью HTML-тега Canvas. Вы можете выбрать любую библиотеку Charting, но имейте в виду, что библиотека должна иметь средства для обновления диаграммы без полного рендеринга его. Chart.js предоставляет метод любой экземплярной диаграммы для его обновления.
Добавьте следующий код в свой файл index.html в соответствующих местах
Добавление файла JavaScript и интенсивную библиотеку клиентской библиотеки
Теперь мы создадим новый файл app.js. В нашей общедоступной папке, а также добавьте следующий код для создания инстанции библиотеки клиентской библиотеки Pusher.
В приведенном выше коде мы также добавили несколько методов утилиты для создания вызова AJAX, а также показывают или скрывают элементы из API DOM.
Добавление кода для извлечения исторических данных
Теперь мы добавим код, чтобы получить исторические данные температуры для отображения графика с начальными значениями. Мы также будем создавать новый объект диаграммы с определенным конфигурацией, чтобы сделать диаграмму линии. Вы можете прочитать больше о том, как построить эти конфиги на Chart.js Документация Отказ
Пожалуйста, добавьте следующий код в файл App.js:
В приведенном выше коде мы добавили функцию с именем RenderWeatherchart. Это будет использоваться для визуализации диаграммы, используя последние данные, которые встроены в ChartConfig Переменная под ключ наборы данных Отказ Если мы хотим нарисовать несколько строковых диаграмм на том же холсте, мы можем добавить больше элементов в этот массив.
данные Ключ в каждом из элементов массива будет отображать разные точки на графике. Мы сделаем запрос AJAX на /getTemperature API, чтобы получить все точки данных и поместить их в этот ключ. Мы позвоним методу рендеринга для отображения графика тогда. Теперь мы можем запустить команду Node Server.js И затем перейдите в браузер со следующим URL, чтобы увидеть начальную диаграмму, отображаемую с помощью данных.
http://localhost:9000/
Чтобы правильно стирать наше приложение, добавьте следующие CSS в новый файл STYLE.CSS в общей папке. Добавьте следующий код в этот файл:
Код для обновления графика на новом событии полученный
Теперь мы хотим подписаться на уникальный канал, на котором наш сервер будет отправлять обновленные события для этого графика. Для нашего проекта канал назван Лондон-Темп-Диаграмма И мероприятие названо Новая температура Отказ Пожалуйста, добавьте следующий код для обработки события, а затем обновите диаграмму в Realtime:
Чтобы увидеть этот код в действии, вы должны обновить браузер, и вы увидите начальную диаграмму. Теперь мы должны глотать новую точку данных. Вам нужно будет позвонить следующему API, используя инструмент вызова MOCK API, либо использовать следующий URL с разными значениями в браузере.
http://localhost:9000/addTemperature?temperature=17&time=1500
Чтобы проверить код обновления графика, вы можете использовать следующий временный код в вашем app.js файл. Он сделает фиктивные запросы AJAX к вышеупомянутому URL после определенного временного интервала.
Вот Github REPO для ссылки на полный код.
Заключение
Наконец, наше приложение Realtime Analytics готов. Мы увидим график погоды для обновления лондонского города в реальном времени.
Мы можем использовать код из этого сообщения в блоге для любых библиотеки диаграмм. Он также может представлять любой тип диаграммы, такой как гистограмма, диаграмма разброса или круговой диаграммы для обновления в реальном времени.
Этот код также может использоваться в нескольких приложениях Enterprise. Например, мониторинговые панели мониторинга, аналитические отчеты, датчики регулирующие приложения и финансовые приложения. Библиотека Pusher помогает нам отправлять события в Realtime для всех подключенных приложений с клиентами. Эти приложения могут потреблять данные для обновления диаграмм в реальном времени.
Эта статья была первоначально опубликована на Блог Pusher.
Оригинал: “https://www.freecodecamp.org/news/how-to-build-a-real-time-graph-using-javascript-pusher-d15ccb7a4b82/”