LCtVY0hNb3NneDMyL1QxUlZuWlpuclNOMnIxK05SMUxKdm10ZkFhUlVLK3M9W+55qiNjdEGEJESw 3a0DgavqAa0MnV9rfnmylJ+PZPAlGbztjPTYeDcIY+VhHF39yFNGbWPJx6KkryeC3lzndQ== кто разгадает шифр , шифрование 2х уровневое с таймстампами первого уровня
Разработать утилиту для переброса данных от TCP-сервера в облако
Общее описание
Требуется разработать утилиту, которая будет пробрасывать данных от передатчика текстовых сообщений на TCP в облако по URL, за которым реализован WebSocket-сервер.
Общая архитектура
Telemetry Relay — Windows-сервис, утилита, работающая в фоновом режиме, которая забирает по TCP сообщения от программы телеметрии (доступна по локальной сети) по протоколу TCP и ретранслирует их в облако.
Telemetry Receiver — ресурс по URL (задается в конфигах), реализованный как WebSocket-сервер, который принимает сообщения и сохраняет в базу.
Требования к Telemetry Relay
- Запускается как сервис в Windows
- Настраивается через файл settings.ini в папке с программой
- Инсталлятор не требуется, буду просто копировать папку в Program Files самостоятельно
[telemetry]
telemetry_ip = 127.0.0.1
telemetry_port = 50000
telemetry_timeout = 60
[cloud]
cloud_url = https://example.ru/api/v3/telemetry/receiver/
cloud_timeout = 60
cloud_token = sdkjhadsfkjhdsfjhdsafkafk2332kjkj32dsdskaf
Таймауты указываются в секундах. При недоступности ресурса утилита бесконечно пытается подключиться.
Описание логики работы
1. Попытаться подключиться к TCP.
- При любых ошибках в подключении бесконечно продолжать пытаться подключиться с таймаутом из конфига.
- При успешном подключении к TCP начать слушать сообщения.
2. Попытаться подключиться к облаку.
- При подключении необходимо отправить заголовок "Authorization: Bearer CLOUD_TOKEN_FROM_SETTINGS_INI_FILE".
- При любых ошибках в подключении бесконечно продолжать пытаться подключиться с таймаутом из конфига.
- В случае успешного подключения по WebSocket, первым сообщением сервер пришлет сообщение {"lastInsertId":SOME_INTEGER_OR_ZERO}, которое будет означать последний полученный ID от данной точки (идентифицируется по токену).
- Прочитав lastInsertId, нужно в папке data найти сообщение с номером больше, чем lastInsertId и передать их скоупом в облако. Формат сообщения: {"id":SOME_INTEGER_ID, "message":"RAW_MESSAGE_FROM_TCP_SERVER"}
- Затем программа начинает работать в режиме прослушивания и ретранслирования (см. пункт №4).
3. При получении сообщения по TCP, разделить его по переводу строки (сообщение = отдельная строка с текстом, может быть кириллица), присвоить этому сообщению уникальный порядковый номер и сохранить полученное сообщение в папке data.
- В день будет набегать примерно 5 мегабайт данных.
- Данные за каждый день нужно складывать в отдельные файлы в таком формате — 2020-12-01.txt
- Сообщения в файлах нужно хранить в виде json'а. Структура json'а: {"id":SOME_INTEGER_ID, "message":"RAW_MESSAGE_FROM_TCP_SERVER"}.
4. Параллельно тому, как сообщения складываются на диск, необходимо как можно быстрее и с минимальной задержкой отправлять сообщения в облако по WebSocket.
- При ошибках на сервере будет разорвано подключение, поэтому пока подключение есть, значит сообщения успешно обрабатываются и например смещать внутренний указатель в программе последнего отправленного сообщения.
- Формат сообщения: {"id":SOME_INTEGER_ID, "message":"RAW_MESSAGE_FROM_TCP_SERVER"}
Другие важные требования
Наиболее критичным приоритетом работы программы является стабильное прослушивание всех сообщений без потерь (т.к. повторно отправить сообщение возможности не будет).
Следующим приоритетом является скорость отправки сообщения в облако — нужен лаг не более 0.5 с. В идеале 0.1-0.2 с.
При наличии сложностей, можно срезать углы и оптимизировать задачу, предварительно согласовав со мной подход.
Если что-то упущено — просьба дополнить, и бюджет на работу будет увеличен.
Выбранный исполнитель
Заявки фрилансеров
Похожие заказы
- Прикладное ПОнет заявокЗакрыт4 года назад
Опишите функцию, которая в заданный список вставляла бы с данной позиции элементы второго списка на языке "Prolog"
Прикладное ПО1 заявкаЗакрыт4 года назад- $8
Задан двумеpный массив А из N строк и М столбцов. Составить программу для сортировки методами: пузырьковой, быстрой сортировки, а также пирамидальная сортировка. Вывести на экран неупорядоченную и упорядоченную матрицы, число сравнений (перестановок) элементов в каждом ...
Прикладное ПО1 исполнительЗавершен4 года назад Добрый день, нужно сделать небольшую программу под Windows, исходный код хорошо прокомментировав. Пример https://yadi.sk/d/EX9kgeHrtIx66w Жду ваших цен и сроков.
Прикладное ПО1 исполнительЗавершен4 года назадНадо разработать оптимальную модель бонусной системы на предложенный параметрах , пример есть , но готов выслушать предложения. Все вопросы в личной беседе. Срок до понедельника 28.12
Прикладное ПО1 заявкаЗакрыт4 года назад- $5
Задание №1 Разработать программу, обеспечивающую построение матрицы парных сравнений в методе анализа иерархий. Задание №2 Модернизировать разработанную программу так, чтобы для построенной матрицы парных сравнений вычислялся вектор приоритетов.
Прикладное ПО1 заявкаЗакрыт4 года назад Cкрипт, парсит/проверяет базу циан по определенному списку адресов и в случаепоявления объявления, которое удовлетворяет критериям, отправляет алерт на почтовый ящик. Полное описание во вложении. Детали готов обсудить.
Прикладное ПО5 заявокЗакрыт4 года назад- $500
Ищем GO разработчика для создания небольшого проекта на основе готовой библиотеки из гитхаба.
Прикладное ПО4 заявкиЗакрыт4 года назад Разработать обычную файловую программу на python и парсингом необходимо собрать данные о фильмах с сайта IMDB. Подробное описание и требование к задаче прикрепляю в файле.
Прикладное ПО1 исполнительЗавершен4 года назад- $20
Необходимо разработать приложение которое бы открывало последовательно набор ссылок в браузере, затем дожидалась загрузки страницы и прокручивала бы страничку до конца, затем приступала к новой ссылке и т.д.
Прикладное ПО1 исполнительЗавершен4 года назад