我正在尝试创建一个网关,它提供一个 RESTful 接口来向通过蓝牙低功耗 (BLE) 通信的设备发送/接收消息。基本上它将 GATT 转换为 HTTP,反之亦然。
基本架构如下所示:
BLE Dongle 连接到 Linux 计算机(fe Raspberry Pi),C 程序打开到 BLE Dongle 的串行连接以发送/接收/处理消息。它使用 TCP/IP 套接字通过 IPC 接收来自 C++ 应用程序的请求,并使用此套接字将来自 BLE 设备(fe 传感器)的回复转发到 C++ 应用程序(充当每个连接的 BLE 加密狗的多线程服务器)。
C++ 应用程序保存此信息(发现的设备、连接的设备及其数据)并实现一个接口来控制基本的蓝牙低功耗功能,如发现、连接等。
客户端可以将 HTTP 请求 (GET/POST) 发送到使用 FastCGI 的 Nginx Web 服务器。我想解析这个 FastCGI 应用程序中的请求,然后与 C++ 应用程序通信以执行命令
fe 客户端打开一个 URI xyz/discover 发送一个 GET 请求。FastCGI 应用程序解析此请求并调用 C++ 应用程序的 Discover 函数以启动蓝牙低功耗发现。
我的问题是如何在 C++ 应用程序和 FastCGI C++ 应用程序之间进行最佳通信。
我的想法:
- C++ 应用程序派生了一个执行 fcgi-spawn 的新子程序(我的 fcgi 应用程序的路径作为参数)。然后创建两个管道用于父子之间的全双工通信
- 在两个进程之间使用命名管道
- 将 FastCGI 功能集成到我的 C++ 应用程序中是个好主意吗?C++ 应用程序运行多个线程:一个接受新的 TCP 连接,以防连接了新的加密狗。它为每个新的 Dongle 启动一个线程。我可以创建另一个负责解析 FastCGI 请求的线程吗?
因为我从来没有真正使用过 FastCGI 和 nginx,所以我只是边学边学。因此,我将不胜感激。谢谢!