业务需求:
需要把客户端的一个函数放到服务端去书写 然后让客户端去调用 实现服务器全栈开发
首先我们在服务端写一个简单脚本
function add(a1,a2)
return a1 + a2
end
然后我们需要在客户端调用这个add函数 实现加法
以下是实现代码:
      
--[[
Lua 装箱拆箱示例 序列化与反序列化
服务端脚本
[url=http://bbs.ml30.com]http://bbs.ml30.com[/url]
[url=http://cgdev.me]http://cgdev.me[/url]
]]
function boxing(object)
local chck = {
value = string.dump(object);
asyncClient = function(player,fucname)
local ret_tbl = {
["funcname"] = fucname,
["object"] = value,
}
Protocol.PowerSend(player,"_boxing",ret_tbl);
end
}
return chck;
end
      
--[[
Lua 装箱拆箱示例 序列化与反序列化
客户端脚本
[url=http://bbs.ml30.com]http://bbs.ml30.com[/url]
[url=http://cgdev.me]http://cgdev.me[/url]
]]
Server = Server or {};
Server["func"] = Server["func"] or {};
function unboxing(object)
if load ~= nil then
return load(object);
end
return loadstring(object);
end
Cli.Send().wait["_boxing"] = function (tbl)
Server.func[tbl["funcname"]] = unboxing(tbl["object"])
end
透过以上代码
我们在服务端引用后 并添加一个脚本测试
      
function add(a1,a2)
return a1+a2;
end
function Event.RegLoginEvent.Ac(player)
boxing(add).asyncClient(player,"add");
end
然后客户端中就可以使用这个函数了
      
function test(a1,a2)
print(Server.func["add"](a1,a2));
end