Commit 222a7d5ff60dd6e33e4d9a3ae9fb0c5daeae65bb
1 parent
318c573a
httpGm
Showing
3 changed files
with
60 additions
and
7 deletions
Show diff stats
src/actions/HttpAction.lua
1 | - | |
2 | -local skynet = require "skynet" | |
3 | -local sharedata = require "skynet.sharedata" | |
4 | 1 | local codecache = require "skynet.codecache" -- 清空缓存用 |
5 | 2 | |
3 | + | |
6 | 4 | local _M = {} |
7 | 5 | |
8 | 6 | |
... | ... | @@ -156,7 +154,35 @@ function _M.hotfix_code(query, body) |
156 | 154 | return 'success' |
157 | 155 | end |
158 | 156 | |
157 | +local function proc_online(cmd, roleId, pms) | |
158 | + local agent = datacenter.get("agent", roleId) | |
159 | + if agent then | |
160 | + local ok, result = pcall(skynet.call, agent.serv, "lua", cmd, pms) | |
161 | + return ok and result or "指令在线失败" | |
162 | + end | |
163 | + return "not_online" | |
164 | +end | |
159 | 165 | |
166 | +function _M.gm_action(query) | |
167 | + local gmFuncs = require "actions.GmAction" | |
168 | + if not query.cmd or not query.id or not gmFuncs[query.cmd] then return "指令不存在" end | |
169 | + -- 在线操作 | |
170 | + query.id = tonumber(query.id) | |
171 | + local isOn = proc_online(query.cmd, query.id, query) | |
172 | + if isOn ~= "not_online" then | |
173 | + return isOn | |
174 | + end | |
175 | + -- 如果_M有直接操作,跳过load角色 | |
176 | + if _M[query.cmd] then return _M[query.cmd](query) end | |
177 | + -- 离线操作 | |
178 | + local role = require("models.Role").new({key = string.format("role:%d", query.id)}) | |
179 | + local ret = role:load() | |
180 | + if not ret then | |
181 | + return "角色不存在" | |
182 | + end | |
183 | + role:loadAll() | |
184 | + return gmFuncs[query.cmd](role, query) | |
185 | +end | |
160 | 186 | |
161 | 187 | |
162 | 188 | return _M |
163 | 189 | \ No newline at end of file | ... | ... |
src/services/httpweb.lua
1 | -local skynet = require "skynet" | |
2 | -local socket = require "skynet.socket" | |
3 | -local httpd = require "http.httpd" | |
4 | -local sockethelper = require "http.sockethelper" | |
1 | + | |
5 | 2 | local urllib = require "http.url" |
6 | 3 | require "shared.init" |
7 | 4 | require "utils.init" |
5 | +local sockethelper = require "http.sockethelper" | |
6 | +local httpd = require "http.httpd" | |
7 | +skynet = require "skynet" | |
8 | +redisproxy = require "shared.redisproxy" | |
9 | +netpack = require "skynet.netpack" | |
10 | +datacenter = require "skynet.datacenter" | |
11 | +sharedata = require "skynet.sharedata" | |
12 | +mcast_util = require "services/mcast_util" | |
13 | +globalCsv = require "csvdata/GlobalDefine" | |
14 | + | |
15 | +local socket = require "skynet.socket" | |
16 | +local harbor = require "skynet.harbor" | |
17 | + | |
18 | +require "shared.init" | |
19 | +require "utils.init" | |
20 | +require "ProtocolCode" | |
21 | +require "skynet.manager" | |
22 | +require "RedisKeys" | |
23 | +require "GlobalVar" | |
24 | + | |
25 | +SendPacket = function(...) end | |
26 | +rpcAgent = function(...) end | |
27 | +rpcParter = function(...) end | |
28 | +rpcRole = function(...) end | |
29 | +rpcUnion = function(...) end | |
30 | +rpcOtherUnion = function(...) end | |
8 | 31 | |
9 | 32 | local table = table |
10 | 33 | local string = string |
... | ... | @@ -25,6 +48,9 @@ end |
25 | 48 | local CMD = require "actions.HttpAction" |
26 | 49 | |
27 | 50 | local function start() |
51 | + redisd = harbor.queryname("REDIS") | |
52 | + csvdb = sharedata.query("csvdata") | |
53 | + | |
28 | 54 | local listen_socket = socket.listen("0.0.0.0", port) |
29 | 55 | print("Listen web port " .. port) |
30 | 56 | socket.start(listen_socket , function(id, addr) | ... | ... |