IPC между FastCGI C++ / Nginx и C++ Application

Я пытаюсь создать шлюз, который предлагает интерфейс RESTful для отправки / получения сообщений на устройства, которые обмениваются данными через Bluetooth Low Energy (BLE). В основном это переводит GATT в HTTP и наоборот.

Базовая архитектура выглядит следующим образом:

Ключ BLE подключен к компьютеру Linux (например, Raspberry Pi), программа C открывает последовательное соединение с ключом BLE для отправки / получения / обработки сообщений. Он получает запросы от приложения C++ через IPC с использованием сокета TCP/IP, а также использует этот сокет для пересылки ответов от устройств BLE (например, датчиков) в приложение C++ (которое действует как многопоточный сервер для каждого подключенного ключа BLE).

Приложение C++ сохраняет эту информацию (например, обнаруженные устройства, подключенные устройства и их данные), а также реализует интерфейс для управления основными функциями Bluetooth Low Energy, такими как Discovery, Connect и т. Д.

Клиент может отправлять HTTP-запросы (GET/POST) на веб-сервер Nginx, который использует FastCGI. Я хотел бы проанализировать запросы в этом приложении FastCGI и затем связаться с приложением C++ для выполнения команд

fe Клиент открывает URI xyz/ Discover, отправляя запрос GET. Приложение FastCGI анализирует эти запросы и вызывает функцию Discover приложения C++, чтобы запустить обнаружение Bluetooth с низким энергопотреблением.

Мой вопрос заключается в том, как лучше всего общаться между Приложением C++ и Приложением FastCGI C++.

Мои идеи:

  • Приложение C++ разветвляет нового потомка, который выполняет exec fcgi-spawn (путь к моему приложению fcgi в качестве аргумента). Затем создайте два канала для полнодуплексной связи между родителем и ребенком.
  • Использование именованных каналов между обоими процессами
  • Является ли хорошей идеей просто интегрировать функциональность FastCGI в мое приложение C++? Приложение C++ запускает несколько потоков: один для приема новых соединений TCP в случае подключения нового ключа. Он запускает тему для каждого нового ключа. Могу ли я просто создать еще один поток, который отвечает за анализ запросов FastCGI?

Так как я никогда не работал с FastCGI и nginx, я просто учусь на ходу. Так что я был бы благодарен за некоторый вклад. Спасибо!

0 ответов

Другие вопросы по тегам