是使用websockets的gRPC的替代方案?

时间:2019-12-04 03:15:15

标签: javascript java websocket grpc

我正处于将我的应用程序从Java迁移到JavaScript的大型项目的中间,并且正在尝试确定针对客户端/服务器的消息传递协议应该是什么。关于我要寻找的一些注意事项:

  1. 从服务器到客户端的数据流非常多,从客户端到服务器的请求很少(响应可能很大)。网络性能是一个非常重要的问题。
  2. 我们将主要在Electron容器中部署新的基于JS的客户端,但将来会支持“现代”浏览器(该要求没有ETA,但我也不想在争夺它时费心成为强制性的。)
  3. 服务器端是并且将继续使用Java。
  4. 需要良好的向后兼容性选项,因为我们将无法始终控制客户端版本。

到目前为止,我们已经完成的研究表明,gRPC(与ProtoBuf一起使用)是打败所有框框的强大候选者。 grpc软件包在Electron中似乎很好用,并且Java中的服务器编码非常简单。最大的缺点是,由于它使用HTTP / 2,因此我们必须跳过箍才能在浏览器(grpc-web与数据代理结合)中运行它。

是否有使用Websocket或其他建议的好选择?理想情况下,在电子与浏览器中执行时,我们希望使用相同的代码。

1 个答案:

答案 0 :(得分:0)

您可以查看WAMP protocol。主要实现是Autobhan。这是一个RPC&PUB / SUB客户端-服务器框架,通过在Websocket上交换JSON(或msgpack)消息来工作。因此非常适合Javascript和浏览器端。