Фрилансеры предложат решение вашей задачи уже через несколько минут!

Публикация заказа на фриланс бирже не займет много времени.

1 месяц назад
Евгений Гетманенко
32 года, Россия
9 лет в сервисе
Был онлайн 4 дня назад
1 месяц назад

Общее описание:

Требуется написать утилиту, которая 1) будет читать поток из TCP и выдавать его клиентам, подключенным по Websocket, обратный обмен при этом не требуется, 2) хранить локально логи пришедших сообщений по TCP, и 3) будет ретранслировать данные в облако на сервер.

Требования:

1) Необходим GUI интерфейс согласно рисунку. Требуется сохранить внешний вид максимально точно в плане размеров. Стиль инпутов, окон и прочиего — использовать готовые системные.

2) Также требуется сохранять все настройки в файл settings.ini.

[input]
input_ip=192.168.1.7
input_port=50000

[websocket]
output_port=5000

[cloud]
output_url=https://example.com/api/collect/
output_token=asjhdajshgdjgadjhgasjdgasjdghjasd
output_method=POST
timeout=15

3) Итоговая папка с утилитой должна содержать в корне единственный запускаемый файл exe, файл settings.ini и папку raw. Все прочие файлы должны быть убраны в одну единственную папку app.

4) Утилита должна запускаться в виде окна. При сворачивании окно должно убираться обратно в трей. В контекстном меню в трее нужны два пункта: Настройки и Закрыть. По нажатию на Настройки отображается единственное окно — GUI из 1-го пункта. 

5) Приложение должно работать под Win7, Win8, Win10 на 32-х и 64-битных системах. Можно сделать два файла под каждую архитектуру.

6) Инсталлятор не требуется.

7) Синхранизация с облаком должна работать по следующей логике:
- Подключение происходит по WebSocket, соединение не разрывается после подключения.
- Сразу после подключения, АПИ облака ответит сообщением {"lastId":23123}, где будет указан последний полученный айди от данного ресурса (ресурс идентифицируется по токену).
- Соответственно после подключения, а также при разрывах соединения и повторном подключении, данные нужно передать, начиная с первого непереданного сообщения (которое АПИ нам ответило в lastId).
- Для переподключения использовать таймаут из конфига.
- Формат передаваемого сообщения — json по следующей схеме: {"id":123213,"token":"asjhdajshgdjgadjhgasjdgasjdghjasd","timestamp":"XXXX-XX-XX XX:XX:XX.xxxxxx","message":"RAW_MESSAGE_FROM_TCP"}

8) Входящий поток по TCP необходимо сохранять локально и добавлять к ним служебные данные:
- Каждому сообщению необходимо инкрементально присваивать порядковый номер и добавлять timestamp локальной машины, когда оно пришло. Все, что пришло от TCP режем по переводу строки — это и есть наше сообщение, каждое из которых нумеруем с айдишником и присваиваем datetime.
- Формат сохраняемого сообщения — json по следующей схеме (идентично тому, что уходит в облако): {"id":123213,"timestamp":"XXXX-XX-XX XX:XX:XX.xxxxxx","message":"RAW_MESSAGE_FROM_TCP"}
- Все приходящие от TCP сообщения необходимо хранить в папке /data/yyyy-mm-dd.txt, где дата соответствует дате сообщения.

9) Самый главный приоритет — надежность приложения, чтобы оно не пропускало ни одного сообщения от TCP. В подавляющем числе случаев утилита будет запускаться на том же компьютере, которые вещает эту телеметрию.

10) По запросу в Телегу @egetmanenko предоставлю код текущей утилиты для ознакомления, которая умеет бриджить TCP<>WebSocket. Либо можно погуглить самостоятельно уже готовые решения.

11) ЯП предпочтительнее C#. Для работы утилиты допускается установка Java или .Net на компьютер пользователя. Другие и нестандартные приложения не допускаются.

Выбранный исполнитель
Иван Петров
75 лет, Россия
1 год в сервисе
Был онлайн 5 дней назад
1 месяц назад

$100

28 дней

Безопасный платеж

  • Рекламное место свободно
    30 дней за $10
  • Рекламное место свободно
    30 дней за $10
  • Рекламное место свободно
    30 дней за $10
Сергей Прохоров
38 лет, Украина
6 лет в сервисе
Был онлайн 29 дней назад
1 месяц назад

Безопасный платеж

ТОП-50 — Прикладное ПО
Иван Петров
75 лет, Россия
1 год в сервисе
Был онлайн 5 дней назад
1 месяц назад

Безопасный платеж

Другие заказы в категории «Прикладное ПО»