使用boost.beast为websocket底层使用, 数据协议使用json/protobuf,实现纯异步的rpc调用.
在参考了各种c++实现的rpc库之后,都有这样或那样的'缺点',然而那些缺点恰恰是我本人非常在乎的,比如ZeroC Ice,不仅体型十分庞大,使用它需要掌握复杂的IDL语言,再比如gRPC,使用的接口并非十分直观,它被设计成一套框架而不是工具库,项目的应用需要掌握它发明的各种概念,然而这此概念往往是与它底层实现有关,如果不是经验十分丰富,恐怕一时难以理解并掌握,其它的细节不在些多叙了。 鉴于此,我想要的是一个拥有简单接口,像调用本地函数一样,并支持异步,不需要编写IDL,于是有了此项目。
依赖boost protobuf。 这个库本身实现只有几个.hpp头文件实现,和一个做为协议底层封装的proto(protobuf作为rpc协议时使用, jsonrpc不需要),包含rpc_websocket_service.hpp和rpc_service_ptl.proto生成的.pb.h/.pb.cc。
用法参考example,你可以编译运行并调试它们,以了解它的实现原理。
tinyrpc 的 nodejs 实现 https://github.com/avplayer/js-tinyrpc