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 測試。
(金慶的專欄 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: {
...
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: {
...