ApeekFlow
  • Платформа Apeekflow
  • С чего начать
    • Начало работы
    • Создаем первое приложение
    • Шаблоны проектов
  • Настройки платформы
    • Профиль
    • Библиотека запросов
    • Источники данных
      • Базы данных
        • PostgreSQL
        • MongoDB
        • MySQL
        • Redis
        • Microsoft SQL Server
        • MariaDB
      • AI сервисы
      • App Development
        • REST API
        • ApeekFlow REST API
      • Messaging
      • Assets
        • Хранилище файлов S3
      • Websocket
      • Сервисы
        • Google Sheets
    • Настройки
      • Рабочие пространства
      • Пользователи и группы
      • Расширенные настройки
        • Сторонние библиотеки
        • Импорт UMD библиотек
    • Корзина
  • Конструктор приложений
    • Обзор
      • Приложения
      • Модули
      • Приложение или модуль
      • Навигационная панель
      • Массовое редактирование
      • Управление слоями
      • Использвание Markdown
      • Горячие клавиши
    • Каталог компонентов
      • Общие настройки компонентов
      • Тост нотификации
      • Components
        • Table
        • Cascader
        • Link
        • Float Button
        • Form
        • JSON Schema Form
        • JSON Editor
        • JSON Explorer
        • Rich Text Editor
        • Input
        • Password
        • Number Input
        • Text Area
        • Auto Complete
        • Switch
        • Checkbox
        • Radio
        • Slider
        • Range Slider
        • Form Button
        • Icon Button
        • Dropdown
        • Toggle Button
        • Rating
        • Select
        • Multiselect
        • Tree
        • Tree Select
        • Text Display
      • Calendar
        • Calendar
        • Timer
        • Date
        • Date Range
        • Time
        • Time Range
      • Layout
        • Responsive Layout
        • Page Layout
        • Column Layout
        • Float Text Container
        • Content Card
        • Tabbed Container
        • Collapsible Container
        • Container
        • List View
        • Grid
        • Modal
        • Drawer
        • Divider
        • Navigation
        • Segmented Control
        • Tour
      • Multimedia
        • File Upload
        • File Viewer
        • Image
        • Image Carousel
        • Audio
        • Video
        • Shapes
        • Lottie Animation
        • Icons
        • Image Editor
        • Color Picker
        • QR Code
        • Scanner
      • Graphs
        • Basic Chart
        • Candlestick Chart
        • Funnel Chart
        • Gauge Chart
        • Graph Chart
        • Heatmap Chart
        • Radar Chart
        • Sankey Chart
        • Sunburst Chart
        • Theme River Chart
        • Tree Chart
        • Treemap Chart
        • Geo Map Charts
        • Mermaid Chart
        • Timeline
        • Progress
        • Progress Circle
      • Collaboration
        • Avatar
        • Avatar Group
        • Comment
      • Integration
        • Page
    • Кастомизация и код
      • Настройка стилей компонентов
      • Temporary State
      • Transformers
      • Data responder
      • Event handlers
      • Выполнение запросов
        • Привязка данных запроса к компонентам
      • Использование Javascript
        • JavaScript запросы
        • Встроенные функции JS
        • Работа с датой и временем в Day.js
    • Антипатерны
  • Релиз менеджмент
    • Версионирование запросов
    • Версионирование приложений
    • Доступ до приложений
    • Публикация приложений
  • Безопасность
    • Основная информация
    • IP адреса облака
    • Права доступа до объектов
Powered by GitBook
On this page
  1. Настройки платформы
  2. Источники данных

Websocket

Realtime Data Updates in Apeekflow

PreviousХранилище файлов S3NextСервисы

Last updated 4 months ago

В эпоху цифровых технологий скорость и оперативность являются ключевыми факторами успеха. Вот почему мы считаем, что наш источник данных WebSocket является отличным дополнением. Но почему это так сильно меняет правила игры?

  • Мгновенные обновления: в отличие от традиционных методов, когда вам нужно обновлять или запрашивать новые данные через API, WebSockets отправляет обновления в браузер пользователей приложения в тот момент, когда они происходят. Представьте себе, что вы просматриваете панель мониторинга и наблюдаете за обновлением точек данных, диаграмм и показателей в режиме реального времени без дополнительной логики вызова API.

  • Расширенная совместная работа: WebSockets не просто обновляет данные, они преобразуют совместную работу. Когда несколько пользователей просматривают один и тот же контент, любые изменения, внесенные одним пользователем, могут быть мгновенно замечены другими. Это означает, что команды могут работать сообща, принимая решения на основе информации в режиме реального времени. Это стало возможным благодаря функции широковещания, которую мы внедрили.

  • Уменьшенная задержка: Благодаря WebSockets задержка между отправкой запроса и получением ответа значительно сокращается. Это гарантирует, что ваши приложения будут работать быстрее и отзывчивее, что повысит удобство работы пользователей.

  • Возможности WebSockets безграничны: от приложений для онлайн-чата до игр в реальном времени, систем отслеживания и мониторинга - возможности WebSockets огромны. С нашим источником данных WebSocket вы не просто будете в курсе последних событий, но и откроете целый мир возможностей для своих приложений в режиме реального времени.

Использование WebSocket в качестве источника данных

Сначала выберите Потоковый запрос в качестве нового запроса из доступных источников данных. Потоковый запрос доступен в Apeekflow версии 2.1.0.

Подключение к серверу WebSocket

В качестве URL-адреса введите адреса сервера WebSocket ws:// (без) и wss:// (с защищенным SSL-соединением). С момента запуска этого запроса Apeekflow пытается установить соединение с сервером WebSocket. В случае успеха особенность подключений WebSocket заключается в том, что они остаются активными и открытыми до тех пор, пока вы не отключите приложение Dataquery / Apeekflow.

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

// for example wss://ws.kraken.com

Прием и широковещательная передача сообщений

Теперь подключение установлено, и, в зависимости от канала, вы уже можете получать данные. Однако довольно часто бывает так, что Клиенту необходимо подписаться на определенную тему или комнату. Для этого, а также просто для трансляции сообщения в соединение, вы можете использовать новую функцию broadcast(); Это функция запроса источника данных / потока WebSocket.

Вот пример в виде JavaScript, который вызывается, как только потоковый запрос успешно подключается к серверу WebSocket и прослушивается в канале.

Сообщения поступают и транслируются в формате JSON.

// for example:

krakenStockTicker.broadcast({
  "event": "subscribe",
  "pair": [
    "EUR/USD"
  ],
  "subscription": {
    "name": "ohlc"
  }
});

Обработка входящих сообщений

Теперь мы можем привязывать входящие сообщения и переводить потоковый запрос в случае успешного выполнения во временное состояние. Это примерный вариант, и вы, возможно, захотите интегрировать его по-другому.

Мы используем триггер успех потокового запроса и устанавливаем временное состояние со значением. В специальном случае Kraken Websocket мы хотим пропустить все сообщения о сердцебиении, поэтому мы устанавливаем временное состояние только в том случае, если в текущем сообщении есть полезные данные.

Сбор сообщений

В вашем сценарии приложения может быть полезно собирать сообщения, например, для отображения диаграммы в виде скользящего окна, подобной этой диаграмме OHLC в нашем примере. Для этого мы создаем, например, массив, который доступен для всего приложения.

window.krakenStockTickerData = [];

Теперь мы можем привязать обработку Javascript для каждого входящего сообщения к триггеру успех потокового запроса и привязать нашу диаграмму к этому массиву данных.

// мы берем строковое значение сообщения Websocket и создаем массив
const currentRawTickerData = currentTickerData.value.split(',');
// теперь, основываясь на массиве, мы можем извлечь нужные нам данные и сформулировать объект JSON
const currentCleanTickerData = {
  "time" : new Date(currentRawTickerData[0].substr(0,10) * 1000).toISOString().substr(11, 8),
  "duration" : new Date(currentRawTickerData[1].substr(0,10) * 1000).toISOString().substr(11, 8),
  "open" : currentRawTickerData[2],
  "high" : currentRawTickerData[3],
  "low" : currentRawTickerData[4],
  "close" : currentRawTickerData[5],
  "weighted_volume" : currentRawTickerData[6],
  "accumulated_volume" : currentRawTickerData[7],
  "trades" : currentRawTickerData[8]
}
// мы помещаем новый объект в массив, krakenStockTickerData
window.krakenStockTickerData.push(currentCleanTickerData);
// и мы следим за тем, чтобы старые данные были удалены, чтобы массив не стал слишком большим
while (window.krakenStockTickerData.length > 30) {
  window.krakenStockTickerData.shift();
}
// Здесь мы устанавливаем значение во временном состоянии, чтобы диаграммы обновляли свою визуализацию
// (привязка к массиву в window-object не запускает триггер для повторного отображения электронных диаграмм)
clockTickerData.setValue(currentCleanTickerData.time);

— сервис, который вы можете использовать для установки и использования серверов WebSocket.

https://www.piesocket.com