【发布时间】:2016-08-10 19:31:03
【问题描述】:
我正在为我的架构中的以下问题寻找解决方案:
我有一个丰富的前端应用程序(React、RxJS、socket.io 等)和一个基于 netty-socketio 编写的 Web 服务层,我目前将其作为 Netty 应用程序运行。这个想法是服务器充当任何实现 socket.io 协议的客户端都可以使用的 API 层,我的前端应用程序就是其中之一。我真的可以在任何地方托管它,可能是一个 CDN。
我遇到的问题是文件,更具体地说是图像处理。经典用例是上传用户头像。我的普通 socket.io 协议不支持它,所以我想出了几个理论上的解决方案:
通过 socket.io API 将图像作为二进制文件上传,将图像存储在服务器的文件系统中,也可以将它们作为二进制文件访问。我的问题是我必须做的序列化/反序列化,而且不同的文件扩展名等似乎容易出错。
在 Netty 中实现一个 HTTP 解析器,例如 this example,在不同端口上的同一个实例中运行它。我已经对此进行了测试,它确实有效,但它的级别非常低,而且我不是 Netty 专家。
创建一个单独的 HTTP 文件服务器,可能使用 servlet 并使用它来存储和引用图像,让前端直接上传到此服务器,只需发送对 socket.io API 的引用以保存在数据库中.我不确定的是这样一个事实,API 基本上希望 UI-s 处理自己的图像存储并仅报告引用,这似乎不安全且无法控制。
使用 CDN 代替 (3) 中描述的行为。这将是一个很好的生产就绪解决方案,但在我的非生产系统中可能会过大。
注意,在情况 (3) 和 (4) 中,我可以将前端托管在同一个地方,现在我正在使用本地 node.js http-server。
我没有考虑过任何建议、意见和解决方案吗?
【问题讨论】: