+7 (911) 704-69-81

Россия, Санкт-Петербург

+7 (911) 704-69-81
Вверх

FinnHub Proxy

FinnHub Proxy позволяет управлять подписками на данные в режиме реального времени. Программа обеспечивает постоянное соединение с сервером, что делает работу с данными более удобной и эффективной.

FinnHub Proxy

ИНСТРУКЦИЯ

finnhub-proxy.py исполняемый в интерпретаторе python 3 файл.

Параметры командной строки:
finnhub-proxy.py -h
usage: finnhub-proxy.py [-h] [-s STOP] [-b BACKGROUND]

optional arguments:
-h, --help show this help message and exit
-s STOP, --stop STOP
-b BACKGROUND, --background BACKGROUND

При запуске без параметров, работает в терминале.
Для завершении работы необходимо нажать CTRL + C

Ведет журнал: /var/log/finnhubproxy.log

Для запуска в качестве системной службы:
/opt/finnhub-proxy/finnhub-proxy.py -b BACKGROUND

Для остановки запущенной службы:
/opt/finnhub-proxy/finnhub-proxy.py -s STOP

Добавить в CRON для перезапуска в случае падения:
/opt/finnhub-proxy/finnhub-proxy.py -b BACKGROUND >/dev/null 2>&1

Режимы работы прокси сервера:
Открывает порт для входящих соединений 127.0.0.1:9001
NGINX проксирует запрос с использованием SSL сертификата на порт 8020

Обработка входящих команд:
При подключении доступна команда auth
После успешной авторизации, становятся доступны команды: subscribe, unsubscribe.
В случае неудачи, соединение разрывается.

Команда subscribe - осуществляет подписку на symbol. Данные немедленно начнут поступать из входящего потока.

Команда unsubscribe — прекращает поток данных по указанному symbol.

Команды поступают в формате JSON:
{"type":"auth","login":"admin","password":"admin"}
{"type":"subscribe","symbol":"BINANCE:BTCUSDT"}
{"type":"unsubscribe","symbol":"BINANCE:BTCUSDT"}

Описание

1. Реализация менеджера управления подписками.

Микросервис открывает порт для входящих подключений — сервер.

Клиент из браузера, подключается к серверу, средствами JS устанавливает постоянное соединение с сервером используя SOCKET. 

Например:
const socket = new WebSocket('wss://ws.domain.ru’);

Обмен данными ведется в формате JSON.

При подключении к серверу, генерируется уникальный ID сеанса — XAUTHTOKEN.

Клиент отправляет запрос содержащий XAUTHTOKEN и нужные пары полей данных для подписки.

В ответ, клиент непрерывно получает данные из SOCKET по полям на которые сделана подписка.

При новой подписке все предыдущие удаляются. Все подписки хранятся в таблице подписок, в качестве свойств объекта по ключу из XAUTHTOKEN.

1.1. Обработчик подключений

Создает слушатель порта для ws.domain.ru 

При входящем клиентском подключении, в отдельном потоке будет запущен обработчик входящего подключения.

Обработчик подключения, ожидает поступления данных из очереди входящего потока finnhub, в случае наличия данных для клиента - отправляет их в браузер.

Обработчик подключения, ожидает поступления данных из браузера клиента. Реализует функции исполнения команд: подписка, отписка, завершение сеанса, авторизация.

1.2. Авторизация

При первом подключении клиента из браузера, в менеджер управления подписками - отправляется запрос авторизации. Если логин\пароль присутствуют в базе данных, то в ответ МУП отдаст уникальный XAUTHTOKEN. TTL 15 минут.

2. Реализация канала между клиентом finnhub и менеджером управления подписками.

На стороне сервера, открывается соединение с wss://ws.finnhub.io

Производится подписка на нужные пары данных, список необходимых для подписки пар, находится в таблице менеджера управления подписками.

  1. Входящий поток от finnhub данных, будет передан менеджеру управления подписками. Для передачи данных будет использована непрерывная очередь между процессами.
  2. Исходящий поток, содержащий список подписок, будет обрабатываться отдельной очередью от менеджера управления подписками к клиенту finnhub.

Менеджер управления подписками - будет реализован в виде дочернего процесса в системе. Главный процесс - будет осуществлять: прослушивание данных от finnhub сервера и реализацию очередей к менеджеру управления подписками.




Примеры панелей управления

Traider bot

Скринер акций, Котировки

CRM bot

Пользователи, События, Параметры визита

  • Установка на сервере
  • Демонстрация работы
  • Тех. поддержка
  • 2 000 ₽
  • Разработка дополнительных функций
  • Настройка сервера
  • Подключение к внешним источникам данных
  • Тех. поддержка
  • от 5 000 ₽