在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
JSON RPCJSON RPC 为利用json数据格式来执行远程调用方式, 作用同xmlrpc,不过与xmlrpc相比, jsonrpc更加轻量,json更加节省数据量,更加可读性高。
官网网站: http://www.json-rpc.org/ JSONRPC协议规范: http://www.json-rpc.org/wiki/specification
lua实现的jsonrpc项目: https://github.com/craigmj/json4lua http://json.luaforge.net/
JSONJSON为一种字符串方式数据组织的格式,以便于传输, 其语法同JAVASCRIPT对象写法(JS Object Notation)。 官网: http://www.json.org/ lua实现的json项目: https://github.com/craigmj/json4lua
LUA JSON 编解码下载 json lua实现代码包, 解压后,将json文件夹放到lua path下,即lua安装目录下。 下载网址: https://github.com/craigmj/json4lua
其中example文件夹下有演示代码 example.lua, 演示了如何将 一个 lua table编码为JSON字符串, 又如何将此字符串,恢复为LUA table。 --[[ JSON4Lua example script. Demonstrates the simple functionality of the json module. ]]-- json = require('json') -- Object to JSON encode test = { one='first',two='second',three={2,3,5} } jsonTest = json.encode(test) print('JSON encoded test is: ' .. jsonTest) -- Now JSON decode the json string result = json.decode(jsonTest) print ("The decoded table result:") table.foreach(result,print) print ("The decoded table result.three") table.foreach(result.three, print)
LUA JSON RPClua json的下载安装包,已经包括 json rpc的实现, 只需要从example中测试 jsonrpc的 客户端和 服务器端例子即可。 客户端依赖 luasocket 来发起http请求。 服务器端代码经过改造, 宿主与xavante, 有连接到来时, 触发执行。
客户端: require ("json.rpc") result, error = json.rpc.call("http://localhost:12345","echo","Test echo!") print("echo call="..result) print("\n\n") result, error = json.rpc.call("http://localhost:12345","average", 1, 3) print("average="..result.average)
服务器端代码: xavante = require("xavante") wsapi = require("wsapi") wsapi.xavante = require("wsapi.xavante") wsapi.request = require("wsapi.request") require ('json') -- The Lua class that is to serve JSON RPC requests local myServer = { echo = function (msg) return msg end, average = function(...) local total=0 local count=0 for i=1, table.getn(arg) do total = total + arg[i] count = count + 1 end return { average= total/count, sum = total, n=count } end }
代码实现了, 客户端和服务通过JSONRPC调用,实现 echo 和 做平均计算的例子。
|
请发表评论