222a7d5f
zhouhaihai
httpGm
|
1
|
|
3fe4471e
zhouhaihai
热更新 demo
|
2
3
4
|
local urllib = require "http.url"
require "shared.init"
require "utils.init"
|
222a7d5f
zhouhaihai
httpGm
|
5
6
7
8
9
10
|
local sockethelper = require "http.sockethelper"
local httpd = require "http.httpd"
skynet = require "skynet"
redisproxy = require "shared.redisproxy"
netpack = require "skynet.netpack"
datacenter = require "skynet.datacenter"
|
222a7d5f
zhouhaihai
httpGm
|
11
|
mcast_util = require "services/mcast_util"
|
a5486ede
zhouhaihai
csvdata 修改为 share...
|
12
|
csvdb = require "shared.csvdata"
|
222a7d5f
zhouhaihai
httpGm
|
13
14
|
local socket = require "skynet.socket"
|
222a7d5f
zhouhaihai
httpGm
|
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
require "shared.init"
require "utils.init"
require "ProtocolCode"
require "skynet.manager"
require "RedisKeys"
require "GlobalVar"
SendPacket = function(...) end
rpcAgent = function(...) end
rpcParter = function(...) end
rpcRole = function(...) end
rpcUnion = function(...) end
rpcOtherUnion = function(...) end
|
3fe4471e
zhouhaihai
热更新 demo
|
29
30
31
32
|
local table = table
local string = string
|
c7ecb87f
zhouhaihai
添加 测试账号 方法
|
33
34
|
skynet.register_protocol {
name = "role",
|
a5486ede
zhouhaihai
csvdata 修改为 share...
|
35
|
id = 101,
|
c7ecb87f
zhouhaihai
添加 测试账号 方法
|
36
37
38
39
|
pack = skynet.pack,
unpack = skynet.unpack,
}
|
5e5d7680
zhouhaihai
热更新 优化
|
40
|
local port = ...
|
3fe4471e
zhouhaihai
热更新 demo
|
41
42
43
|
port = tonumber(port)
local key = "zhaolu1234dangge"
|
3fdfef30
zhouhaihai
httpweb
|
44
45
46
47
|
local function response(id, code, body)
local ok, err = httpd.write_response(sockethelper.writefunc(id), code, body, {
["Connection"] = "Close",
})
|
3fe4471e
zhouhaihai
热更新 demo
|
48
49
50
51
52
53
54
55
56
57
|
if not ok then
-- if err == sockethelper.socket_error , that means socket closed.
skynet.error(string.format("fd = %d, %s", id, err))
end
end
local CMD = require "actions.HttpAction"
local function start()
|
a5486ede
zhouhaihai
csvdata 修改为 share...
|
58
|
globalCsv = csvdb["GlobalDefineCsv"]
|
222a7d5f
zhouhaihai
httpGm
|
59
|
|
33be3111
zhouhaihai
修改hangPass 结构
|
60
|
|
3fe4471e
zhouhaihai
热更新 demo
|
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
local listen_socket = socket.listen("0.0.0.0", port)
print("Listen web port " .. port)
socket.start(listen_socket , function(id, addr)
socket.start(id)
local code, url, method, header, body = httpd.read_request(sockethelper.readfunc(id), 8192)
if code then
if code ~= 200 then
response(id, code)
else
local path, query = urllib.parse(url)
local cmd = path:match("([^/]+)")
if not CMD[cmd] or not query then
response(id, 404)
socket.close(id)
return
end
local query = urllib.parse_query(query)
|
3b903aa0
zhouhaihai
队列长度
|
78
79
80
81
82
|
-- if query.key ~= key then
-- response(id, 404)
-- socket.close(id)
-- return
-- end
|
3fe4471e
zhouhaihai
热更新 demo
|
83
84
85
86
|
local content = CMD[cmd](query, body)
if not content then
code = 404
end
|
f871be67
zhouhaihai
返回值要是字符串
|
87
|
response(id, code, tostring(content))
|
3fe4471e
zhouhaihai
热更新 demo
|
88
89
90
91
92
93
94
95
96
97
|
end
else
if url == sockethelper.socket_error then
skynet.error("socket closed")
else
skynet.error(url)
end
end
socket.close(id)
end)
|
e3c5cc5e
zhouhaihai
跨服竞技场over
|
98
99
100
101
102
103
104
105
106
107
108
109
|
-- 注册全服广播
local channels = {}
for i = 1, 10 do
local channel = datacenter.get("MC_W_CHANNEL" .. i)
if channel then
table.insert(channels, channel)
end
end
if #channels > 0 then
mcast_util.sub_worlds(channels)
end
|
3fe4471e
zhouhaihai
热更新 demo
|
110
111
112
113
114
115
116
117
118
119
120
|
end
local function __init__()
skynet.dispatch("lua", function(_,_, command, ...)
if command == "start" then
skynet.ret(skynet.pack(start(...)))
end
end)
end
skynet.start(__init__)
|