我想为处理文件下载/上传请求(和其他自定义操作)的 Raspberry Pi(C++、Boost、OpenSSL)构建一个应用程序。RPi 有一个外部 HDD 连接到它(通过 USB)。我们将其简称为存储(RPi + HDD)。
我有一个公共服务器,可以根据需要进行配置。问题是存储位于我无权配置的路由器后面(不包括端口转发),因此公共服务器无法直接连接到Stroage。
以编程方式,通过公共服务器在客户端(Web 浏览器/移动应用程序)和存储之间进行通信的最佳方式是什么?一个简单的用例是:我想通过 Internet将文件从Storage下载到我的手机。
我可以想到两种可能的解决方案:
- 在公共服务器和Storage之间保持隧道开放。这对于多个存储是否可扩展(假设公共服务器将来会为其中的许多存储提供服务)?
- 存储每3 秒 ping 一次公共服务器(更像是宣布服务器在线),如果公共服务器有来自客户端的请求,则将建立完整连接(客户端 <-> 公共服务器 <-> Storage ) 和文件下载/上传请求将正常处理。
我该如何实现(不包括 Weaved 等第三方工具)以及还有哪些其他可能性?另外,我上面描述的两种选择是否可行?
整个系统架构如下所示。
我知道这是一个更普遍的问题,但我不知道如何处理我的特殊情况。
