我正在进行一个非常大的项目,要将我的应用程序从 Java 迁移到 JavaScript,并且正在尝试确定客户端/服务器的消息传递协议(protocol)。关于我正在寻找的内容的一些注释:
- 有大量数据从服务器流式传输到客户端,客户端很少向服务器发出小请求(响应可能很大)。网络性能是一个非常大问题。
- 我们将主要在 Electron 容器中部署新的基于 JS 的客户端,但将来会支持“现代”浏览器(该要求没有预计到达时间,但我也不想在它出现时感到困惑)成为强制性的)。
- 服务器端现在并将继续使用 Java。
- 需要良好的向后兼容性选项,因为我们并不总是能够控制客户端版本。
我们迄今为止所做的研究表明 gRPC(带有 ProtoBuf)是满足所有条件的强有力的候选者。 grpc 包在 Electron 中似乎工作得很好,并且 Java 中的服务器编码非常简单。最大的缺点是,由于它使用 HTTP/2,我们必须跳过重重困难才能在浏览器中运行它(grpc-web 与数据代理相结合)。
有没有使用 websockets 的好的替代方案,或者完全有其他建议?理想情况下,我们希望在 Electron 与浏览器中执行时使用相同的代码。
最佳答案
您可以查看WAMP protocol 。主要实现是 Autobhan 。它是一个 RPC 和 PUB/SUB 客户端-服务器框架,通过 websocket 交换 JSON(或 msgpack)消息来工作。因此非常适合 Javascript 和浏览器端。
关于javascript - 使用 websocket 的 gRPC 替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59168448/