admin 发表于 2019-4-10 11:07:23

GA封装的客户端服务端通讯函数

依赖项:服务端:powersend.share.lua
      客户端:更新至20190410及以上版本登录器
二建端自带以上依赖项(请使用最新版)
服务端脚本请从二建端中找出拷贝至服务器,客户端请找GA客服更新

作用:该模块允许客户端与服务端以table的方式来传送数据数据
传输为异步操作(不堵塞) 并且自动裁包组包 操作者无需关心细节问题

服务端例子:(其中Event.Recv.XX中的 XX 可以是任意字符串)
function Event.Recv.CS(player,packet)
      if packet == "发送数据1" then
            local ret_tbl = {
                ["age"] = 12,
                ["sex"] = 1,
            }
            Protocol.PowerSend(player,"发送数据1异步回传",ret_tbl)
      end
end

客户端例子:
Cli.Send("发送数据1").wait["发送数据1异步回传"] = function (tbl)
      Cli.MessageBox(tbl["age"])
end

如只要在客户端注册一个接受函数,而不发送任何数据时,可以使用以下写法:
Cli.Send().wait["发送数据1异步回传"] = function (tbl)
      Cli.MessageBox(tbl["age"])
end




实用例子:点击按钮,客户端的按钮图档从100000变成120000,由服务端gmsv回传数据控制
客户端:
saveobject = nil;
-- 注册一个窗口打开事件回调
function Event.ViewInit.Test(view)
      -- 如果是首次加载
      if view.IsInit then
                -- 设置以下控件为顶层
                view.settop();      
                -- 往窗口加入一个image控件
                view.add(new.image("Test_1"))
                return;
      end
      local object = view.find("Test_1")
      object.enable = 1
      object.xpos = 10
      object.ypos = 10
      object.imageID = 100000
      object.event = function(object,event)      
                if event == Cevent.click then
                        Cli.Send("GETR").wait["RET1"] = function (tbl)
                           saveobject.imageID = tonumber(tbl["result"])                        
                        end
                end
      
      end
      saveobject = object
end


服务端:
function Event.Recv.CS(player,packet)
      if packet == "GETR" then
            local ret_tbl = {
                ["result"] = 120000
            }
            Protocol.PowerSend(player,"RET1",ret_tbl)
      end
end







31558770 发表于 2022-3-25 10:20:31

学习一下 路过看看啊
页: [1]
查看完整版本: GA封装的客户端服务端通讯函数