金庆的专栏

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  423 随笔 :: 0 文章 :: 454 评论 :: 0 Trackbacks
grpc-lua 示例

(金庆的专栏 2018.4)

grpc-lua (https://github.com/jinq0123/grpc-lua) 是 grpc 的 lua 绑定库,
应用了 luapbintf , 不需要生成代码,直接读取 proto 文件。

如:
    -- Sync request.
    local request = { name = "world" }
    local response = assert(stub:sync_request("SayHello", request))
    print("Greeter received: " .. response.message)

完整的示例代码见 examples 目录。

服务器和客户端都支持同步和异步调用。

将 examples/conan_install.bat.example 去除 .example 后缀,然后运行,
将安装所有的依赖库. 须先安装 conan 包管理工具 (http://docs.conan.io/en/latest/installation.html)。
还需要设置 git 代理,因为 grpc 的子库需要翻违墙。

conan_install.bat 实际上是下载依赖库代码并编译。结果在用户目录 .conan/data/。
在其中搜索 lua-cpp.exe, lua-cpp.dll, luapbintf.dll, grpc_lua.dll 并复制到 examples/helloworld/ 目录下。

然后在 helloworld 目录下分别运行 run_server.bat 和 run_client.bat 测试。

已编译测试可行的完整包可下载:
grpc-lua 代码及示例Windows执行程序:https://download.csdn.net/download/jq0123/10346554
grpc-lua 示例 CentOS 7.4 执行程序打包:https://download.csdn.net/download/jq0123/10346003

CentOS 7.4 实测:

[jinqing@localhost helloworld]$ ls
greeter_client.lua   grpc_lua.so       lua-cpp         run_server.bat
greeter_server.lua   helloworld.proto  luapbintf.so
greeter_service.lua  liblua-cpp.so     run_client.bat
[jinqing@localhost helloworld]$ ./lua-cpp greeter_server.lua
Server listening on 0.0.0.0:50051
Got hello from world
Got hello from world

[jinqing@localhost helloworld]$ ./lua-cpp greeter_client.lua
Greeter received: Hello world
Async greeter received: Hello world
[jinqing@localhost helloworld]$

[jinqing@localhost route_guide]$ ./lua-cpp route_guide_server.lua
RecordRoute reader end.
RouteChat reader end.

[jinqing@localhost route_guide]$ ./lua-cpp route_guide_client.lua
-------------- Sync get feature --------------
Found feature: {
...
posted on 2018-04-13 15:41 金庆 阅读(1363) 评论(0)  编辑 收藏 引用 所属分类: 9. 其它

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理