1. Сниффер сети Golos. Цель - получение информации о событиях, происходящих в чейне в режиме реального времени.
[x] Реализация стабильного подключения к ноде Golos. Стабильность подразумевает корректную обработку любых ошибок на уровне транспортного протокола, некорректных ответов ноды, прекращения поступления событий от ноды. Корректное восстановление подключения в случае возникновения указанных исключительных ситуаций.
[x] Реализация корректной обработки временных разрывов в подключении (пропущенных блоков). Все номера блоков обрабатываются последовательно по возрастанию, текущий блок не обрабатывается до тех пор, пока не будет в полной мере обработан пропущенный ряд.
[x] Уточняющие запросы для получения дополнительной информации (место для потенциального расширения плагинами). В данной задаче - получение операций (upvote, transfer, comment).
[x] Обработка (фильтрация, сортировка, декомпозиция, трансформация...) полученных данных для передачи в сервис брокера сообщений.
[x] Передача структурированных сообщений брокеру.
2. Брокер сообщений. В целом - любой брокер, поддерживающий amqp. На этой стадии - RabbitMQ. Реализация Publish/Subscribe для системных событий сети Golos. Генераторы событий - потенциально любые сервисы, на данной стадии получает сообщения от сниффера (п.1).
[x] Реализация устойчивой к сбоям структуры очередей сообщений (сохраняемых, с гарантированной доставкой).
[x] Реализация логики распределения сообщений по соответствующим очередям для дальнейшей передачи в push notification service (потенциально в любой другой сервис, например сохранение в БД etc.)
3. Сервис доставки нотификаций клиентам (Push notification service). Является потребителем для брокера сообщений (п.2).
[x] Создание и поддержка WebSocket каналов для каждого клиента онлайн.
[x] Интеграция сервиса с существующей системой аутентификации толстого.
[x] Интеграция сервиса с существующей моделью событий толстого (redux).
[x] Корректная обработка разрывов соединения, прочих ошибочных ситуаций для обеспечения хронологии и целостности доставляемых сообщений.
[x] Потребление сообщений из брокера (п.2) в реальном времени и распределение по открытым клиентским каналам (в реальном времени).
[x] Предварительная тестовая реализация GUI поступивших сообщений на клиентской стороне.
Структура сервисов :
1. Сниффер сети Golos. Цель - получение информации о событиях, происходящих в чейне в режиме реального времени.
[x] Реализация стабильного подключения к ноде Golos. Стабильность подразумевает корректную обработку любых ошибок на уровне транспортного протокола, некорректных ответов ноды, прекращения поступления событий от ноды. Корректное восстановление подключения в случае возникновения указанных исключительных ситуаций.
[x] Реализация корректной обработки временных разрывов в подключении (пропущенных блоков). Все номера блоков обрабатываются последовательно по возрастанию, текущий блок не обрабатывается до тех пор, пока не будет в полной мере обработан пропущенный ряд.
[x] Уточняющие запросы для получения дополнительной информации (место для потенциального расширения плагинами). В данной задаче - получение операций (upvote, transfer, comment).
[x] Обработка (фильтрация, сортировка, декомпозиция, трансформация...) полученных данных для передачи в сервис брокера сообщений.
[x] Передача структурированных сообщений брокеру.
2. Брокер сообщений. В целом - любой брокер, поддерживающий amqp. На этой стадии - RabbitMQ. Реализация Publish/Subscribe для системных событий сети Golos. Генераторы событий - потенциально любые сервисы, на данной стадии получает сообщения от сниффера (п.1).
[x] Реализация устойчивой к сбоям структуры очередей сообщений (сохраняемых, с гарантированной доставкой).
[x] Реализация логики распределения сообщений по соответствующим очередям для дальнейшей передачи в push notification service (потенциально в любой другой сервис, например сохранение в БД etc.)
3. Сервис доставки нотификаций клиентам (Push notification service). Является потребителем для брокера сообщений (п.2).
[x] Создание и поддержка WebSocket каналов для каждого клиента онлайн.
[x] Интеграция сервиса с существующей системой аутентификации толстого.
[x] Интеграция сервиса с существующей моделью событий толстого (redux).
[x] Корректная обработка разрывов соединения, прочих ошибочных ситуаций для обеспечения хронологии и целостности доставляемых сообщений.
[x] Потребление сообщений из брокера (п.2) в реальном времени и распределение по открытым клиентским каналам (в реальном времени).
[x] Предварительная тестовая реализация GUI поступивших сообщений на клиентской стороне.