javascript - 使用 websocket 的 gRPC 替代方案?

标签 javascript java websocket grpc

我正在进行一个非常大的项目,要将我的应用程序从 Java 迁移到 JavaScript,并且正在尝试确定客户端/服务器的消息传递协议(protocol)。关于我正在寻找的内容的一些注释:

  1. 有大量数据从服务器流式传输到客户端,客户端很少向服务器发出小请求(响应可能很大)。网络性能是一个非常大问题。
  2. 我们将主要在 Electron 容器中部署新的基于 JS 的客户端,但将来会支持“现代”浏览器(该要求没有预计到达时间,但我也不想在它出现时感到困惑)成为强制性的)。
  3. 服务器端现在并将继续使用 Java。
  4. 需要良好的向后兼容性选项,因为我们并不总是能够控制客户端版本。

我们迄今为止所做的研究表明 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/

相关文章:

javascript - 替代 if..else 来确定要调用哪个文件

java - Websocket 仅限 Web 应用程序?

java - 为什么 "paragraph reference component"显示空图 block (Geometrixx 示例)?

javascript - 使用 Google Charts 的动态数据

java - 使用路径列表从 SSH 查询大量文件

java - LWJGL绘图时如何选择图像的区域?

websocket - Spring Websockets最大并发连接数

java - 如何让 JSR-356 (javax.websockets.api) 在未嵌入的 Jetty 9.3 JEE 环境中工作?

javascript - THREE.js - 旋转移动 3D 球

java - DDD 聚合根,如何创建不同类型的新子聚合元素?工厂方法?