Skip to content

Commit

Permalink
room_game 相关增加get_addr接口
Browse files Browse the repository at this point in the history
  • Loading branch information
huahua132 committed Oct 12, 2024
1 parent f14abb8 commit c62e72b
Show file tree
Hide file tree
Showing 11 changed files with 86 additions and 43 deletions.
4 changes: 2 additions & 2 deletions examples/digitalbomb/hall/hall_plug.lua
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ function M.init(interface_mgr)
end

function M.connect(player_id)
log.info("hall_plug connect ",player_id)
log.info("hall_plug connect ",player_id, g_interface_mgr:get_addr(player_id))
return {
player_id = player_id,
}
Expand All @@ -104,7 +104,7 @@ function M.disconnect(player_id)
end

function M.reconnect(player_id)
log.info("hall_plug reconnect ",player_id)
log.info("hall_plug reconnect ",player_id, g_interface_mgr:get_addr(player_id))
return {
player_id = player_id,
}
Expand Down
1 change: 1 addition & 0 deletions examples/digitalbomb/login/login_plug.lua
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ end

--登录成功
function M.login_succ(player_id,login_res)
log.info("login_succ:", player_id, g_interface_mgr:get_addr(player_id))
login_msg:login_res(player_id,login_res)
end

Expand Down
4 changes: 2 additions & 2 deletions examples/digitalbomb/module/client_m.lua
Original file line number Diff line number Diff line change
Expand Up @@ -384,9 +384,9 @@ function CMD.start(config)
--reload_reconnet_test('room_game_hall_m')
--reload_reconnet_test('room_game_alloc_m')
--reload_reconnet_test('room_game_table_m')
player_game()
--player_game()
--player_game_reconnect()
--player_reload_reconnect('room_game_hall_m')
player_reload_reconnect('room_game_hall_m')
--player_reload_reconnect('room_game_alloc_m')
--player_reload_reconnect('room_game_table_m')
end)
Expand Down
2 changes: 2 additions & 0 deletions examples/digitalbomb/table/table_plug.lua
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ function M.table_creator(table_id, table_name, ...)
log.info("table_creator >>> ",table_id, table_name, create_player_id)
return {
enter = function(player_id)
log.info("enter:", player_id, m_interface_mgr:get_addr(player_id))
return m_logic:enter(player_id)
end,

Expand All @@ -73,6 +74,7 @@ function M.table_creator(table_id, table_name, ...)
end,

reconnect = function(player_id)
log.info("reconnect:", player_id, m_interface_mgr:get_addr(player_id))
return m_logic:reconnect(player_id)
end,

Expand Down
4 changes: 2 additions & 2 deletions examples/room_game_jump/hall/hall_plug.lua
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ function M.init(interface_mgr)
end

function M.connect(player_id, is_jump_join)
log.info("hall_plug connect ",player_id, is_jump_join, skynet.address(skynet.self()))
log.info("hall_plug connect ",player_id, g_interface_mgr:get_addr(player_id), is_jump_join, skynet.address(skynet.self()))
return {
player_id = player_id,
}
Expand All @@ -79,7 +79,7 @@ function M.disconnect(player_id)
end

function M.reconnect(player_id)
log.info("hall_plug reconnect ",player_id)
log.info("hall_plug reconnect ",player_id, g_interface_mgr:get_addr(player_id))
return {
player_id = player_id,
}
Expand Down
1 change: 1 addition & 0 deletions examples/room_game_jump/login/login_plug.lua
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ end

--登录成功
function M.login_succ(player_id,login_res)
log.info("login_succ >>> ", g_interface_mgr:get_addr(player_id))
login_msg:login_res(player_id,login_res)
end

Expand Down
9 changes: 5 additions & 4 deletions examples/room_game_jump/table/table_plug.lua
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@ local timer = require "skynet-fly.timer"

local M = {}

local g_interface_mgr = nil
function M.init(interface_mgr)

g_interface_mgr = interface_mgr
end

M.send = pbnet_util.send
Expand All @@ -17,11 +18,11 @@ M.ws_broadcast = ws_pbnet_util.broadcast
--游戏桌子创建者
function M.table_creator(table_id)
local m_player_map = {}

local m_interface_mgr = g_interface_mgr:new(table_id)
return {
--玩家进入桌子
enter = function(player_id)
log.info("enter ", player_id)
log.info("enter ", player_id, m_interface_mgr:get_addr(player_id))
m_player_map[player_id] = {
is_canleave = false
}
Expand Down Expand Up @@ -49,7 +50,7 @@ function M.table_creator(table_id)
end,
--玩家重连
reconnect = function(player_id)
log.info("reconnect ", player_id)
log.info("reconnect ", player_id, m_interface_mgr:get_addr(player_id))
end,
--消息分发处理
handle = {}
Expand Down
24 changes: 12 additions & 12 deletions module/room_game_alloc_m.lua
Original file line number Diff line number Diff line change
Expand Up @@ -83,15 +83,15 @@ local function create_table(table_name, ...)
end
end

local function join(player_id, gate, fd, is_ws, hall_server_id, table_name, table_id)
local function join(player_id, gate, fd, is_ws, addr, hall_server_id, table_name, table_id)
local t_info = g_table_map[table_id]
if not t_info then
return alloc_plug.table_not_exists()
end
local table_server_id = t_info.table_server_id
local room_client = t_info.room_client
local table_id = t_info.table_id
local ok,errcode,errmsg = room_client:mod_call_by_name('enter',table_id,player_id,gate,fd,is_ws,hall_server_id)
local ok,errcode,errmsg = room_client:mod_call_by_name('enter', table_id, player_id, gate, fd, is_ws, addr, hall_server_id)
if not ok then
log.info("enter table fail ",player_id,errcode,errmsg)
return nil,errcode,errmsg
Expand All @@ -105,7 +105,7 @@ local function join(player_id, gate, fd, is_ws, hall_server_id, table_name, tabl
end
end

local function match_join(player_id, gate, fd, is_ws, hall_server_id, table_name)
local function match_join(player_id, gate, fd, is_ws, addr, hall_server_id, table_name)
assert(not g_player_map[player_id])
local table_id = alloc_plug.match(player_id)
local _,errcode,errmsg
Expand All @@ -117,18 +117,18 @@ local function match_join(player_id, gate, fd, is_ws, hall_server_id, table_name
end
end

return join(player_id, gate, fd, is_ws, hall_server_id, table_name, table_id)
return join(player_id, gate, fd, is_ws, addr, hall_server_id, table_name, table_id)
end

local function create_join(player_id, gate, fd, is_ws, hall_server_id, table_name)
local function create_join(player_id, gate, fd, is_ws, addr, hall_server_id, table_name)
assert(not g_player_map[player_id])
local ok,errcode,errmsg = create_table(table_name)
if not ok then
return ok,errcode,errmsg
end

local table_id = ok
return join(player_id, gate, fd, is_ws, hall_server_id, table_name, table_id)
return join(player_id, gate, fd, is_ws, addr, hall_server_id, table_name, table_id)
end

local function leave(player_id, reason)
Expand Down Expand Up @@ -202,18 +202,18 @@ end
----------------------------------------------------------------------------------
local CMD = {}
--创建进入房间
function CMD.create_join(player_id, gate, fd, is_ws, hall_server_id, table_name)
return queue(create_join, player_id, gate, fd, is_ws, hall_server_id, table_name)
function CMD.create_join(player_id, gate, fd, is_ws, addr, hall_server_id, table_name)
return queue(create_join, player_id, gate, fd, is_ws, addr, hall_server_id, table_name)
end

--匹配进入房间
function CMD.match_join(player_id, gate, fd, is_ws, hall_server_id, table_name)
return queue(match_join, player_id, gate, fd, is_ws, hall_server_id, table_name)
function CMD.match_join(player_id, gate, fd, is_ws, addr, hall_server_id, table_name)
return queue(match_join, player_id, gate, fd, is_ws, addr, hall_server_id, table_name)
end

--指定房间进入
function CMD.join(player_id, gate, fd, is_ws, hall_server_id, table_name, table_id)
return queue(join, player_id, gate, fd, is_ws, hall_server_id, table_name, table_id)
function CMD.join(player_id, gate, fd, is_ws, addr, hall_server_id, table_name, table_id)
return queue(join, player_id, gate, fd, is_ws, addr, hall_server_id, table_name, table_id)
end

--离开房间
Expand Down
28 changes: 20 additions & 8 deletions module/room_game_hall_m.lua
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ local function new_join_table(agent, table_name, join_cmd)
local player_id = agent.player_id
local hall_server_id = agent.hall_server_id

local table_server_id,table_id,errmsg = alloc_client:mod_call(join_cmd, player_id, gate, fd, agent.is_ws, hall_server_id, table_name)
local table_server_id,table_id,errmsg = alloc_client:mod_call(join_cmd, player_id, gate, fd, agent.is_ws, agent.addr, hall_server_id, table_name)
if not table_server_id then
return false,table_id,errmsg
end
Expand Down Expand Up @@ -76,7 +76,7 @@ local function join_table(agent, player_id, table_name, table_id)
local gate = agent.gate
local fd = agent.fd
local hall_server_id = agent.hall_server_id
local table_server_id,table_id,errmsg = xx_pcall(skynet.call, alloc_server_id, 'lua', "join", player_id, gate, fd, agent.is_ws, hall_server_id, table_name, table_id)
local table_server_id,table_id,errmsg = xx_pcall(skynet.call, alloc_server_id, 'lua', "join", player_id, gate, fd, agent.is_ws, agent.addr, hall_server_id, table_name, table_id)
if not table_server_id then
return false,table_id,errmsg
end
Expand Down Expand Up @@ -177,7 +177,7 @@ local function connect(agent, is_reconnect, is_jump_join)
local table_server_id = agent.table_server_id
local table_id = agent.table_id
if table_server_id then
skynet.send(table_server_id, 'lua', 'reconnect', gate, fd, agent.is_ws, table_id, player_id)
skynet.send(table_server_id, 'lua', 'reconnect', gate, fd, agent.is_ws, agent.addr, table_id, player_id)
end
end

Expand Down Expand Up @@ -459,10 +459,20 @@ function interface:queue(player_id, func, ...)
end
return agent.queue(func, ...)
end

--获取客户端连接IP:PORT
function interface:get_addr(player_id)
local agent = g_player_map[player_id]
if not agent then
return ""
end

return agent.addr
end
----------------------------------------------------------------------------------
--CMD
----------------------------------------------------------------------------------
local function connect_new(gate, fd, is_ws, player_id, watchdog, is_jump_join)
local function connect_new(gate, fd, is_ws, addr, player_id, watchdog, is_jump_join)
--先设置转发,成功后再建立连接管理映射,不然存在建立连接,客户端立马断开的情况,掉线无法通知到此服务
if fd > 0 and not skynet.call(gate, 'lua', 'forward', fd) then
return nil, -1, "forward err"
Expand All @@ -479,6 +489,7 @@ local function connect_new(gate, fd, is_ws, player_id, watchdog, is_jump_join)
hall_server_id = SELF_ADDRESS,
dis_conn_time = 0, --掉线时间
is_ws = is_ws, --是否websocket连接
addr = addr,
}
g_player_map[player_id] = agent
else
Expand All @@ -491,15 +502,16 @@ local function connect_new(gate, fd, is_ws, player_id, watchdog, is_jump_join)
agent.gate = gate
agent.watchdog = watchdog
agent.is_ws = is_ws
agent.addr = addr
is_reconnect = true
end

g_fd_map[fd] = agent
return agent.queue(connect, agent, is_reconnect, is_jump_join)
end

function CMD.connect(gate, fd, is_ws, player_id, watchdog)
return connect_new(gate, fd, is_ws, player_id, watchdog)
function CMD.connect(gate, fd, is_ws, addr, player_id, watchdog)
return connect_new(gate, fd, is_ws, addr, player_id, watchdog)
end
--掉线
function CMD.disconnect(gate,fd,player_id)
Expand Down Expand Up @@ -568,8 +580,8 @@ function CMD.jump_exit(player_id)
end

--跳入新服务
function CMD.jump_join(gate, fd, is_ws, player_id, watchdog)
return connect_new(gate, fd, is_ws, player_id, watchdog, true)
function CMD.jump_join(gate, fd, is_ws, addr, player_id, watchdog)
return connect_new(gate, fd, is_ws, addr, player_id, watchdog, true)
end

function CMD.start(config)
Expand Down
27 changes: 20 additions & 7 deletions module/room_game_table_m.lua
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ end
--发送消息
local function send_msg(table_id, player_id, header, body)
if not is_online(table_id,player_id) then
log.info("send msg not online ",table_id, player_id)
log.info("send msg not online ",table_id, player_id, header)
return
end
local player = get_player_info(table_id, player_id)
Expand All @@ -104,7 +104,7 @@ end
local function send_msg_by_player_list(table_id, player_list, header, body)
local t_info = get_table_info(table_id)
if not t_info then
log.warn("send_msg_by_player_list not exists table_id = ",table_id)
log.warn("send_msg_by_player_list not exists table_id = ",table_id, header)
return
end

Expand Down Expand Up @@ -260,12 +260,23 @@ function interface:call_alloc(cmd,...)

return skynet.call(t_info.alloc_server_id,'lua',cmd,table_id,...)
end

--获取客户端连接IP:PORT
function interface:get_addr(player_id)
local table_id = self.table_id
local player = get_player_info(table_id, player_id)
if not player then
return ""
end

return player.addr
end
-------------------------------------------------------------------------------
--CMD
-------------------------------------------------------------------------------
local CMD = {}
--创建房间
function CMD.create_table(table_id,alloc_server_id, ...)
function CMD.create_table(table_id, alloc_server_id, ...)
assert(not g_table_map[table_id])
g_table_map[table_id] = {
alloc_server_id = alloc_server_id,
Expand All @@ -276,7 +287,7 @@ function CMD.create_table(table_id,alloc_server_id, ...)
end

--进入房间
function CMD.enter(table_id,player_id,gate,fd,is_ws,hall_server_id)
function CMD.enter(table_id, player_id, gate, fd, is_ws, addr, hall_server_id)
assert(g_table_map[table_id])
local t_info = g_table_map[table_id]
local player_map = t_info.player_map
Expand All @@ -289,6 +300,7 @@ function CMD.enter(table_id,player_id,gate,fd,is_ws,hall_server_id)
gate = gate,
hall_server_id = hall_server_id, --大厅服id
is_ws = is_ws,
addr = addr,
}

local isok,errcode,errmsg = t_info.game_table.enter(player_id)
Expand All @@ -300,15 +312,15 @@ function CMD.enter(table_id,player_id,gate,fd,is_ws,hall_server_id)
end

--离开房间
function CMD.leave(table_id,player_id,reason)
function CMD.leave(table_id, player_id, reason)
assert(g_table_map[table_id])

local t_info = g_table_map[table_id]
local player_map = t_info.player_map

assert(player_map[player_id])

local isok,errcode,errmsg = t_info.game_table.leave(player_id,reason)
local isok,errcode,errmsg = t_info.game_table.leave(player_id, reason)
if not isok then
return isok,errcode,errmsg
end
Expand Down Expand Up @@ -350,7 +362,7 @@ function CMD.disconnect(gate,fd,table_id,player_id)
end

--重新连接
function CMD.reconnect(gate,fd,is_ws,table_id,player_id)
function CMD.reconnect(gate, fd, is_ws, addr, table_id, player_id)
assert(g_table_map[table_id])
local t_info = g_table_map[table_id]
local player_map = t_info.player_map
Expand All @@ -360,6 +372,7 @@ function CMD.reconnect(gate,fd,is_ws,table_id,player_id)
player.fd = fd
player.gate = gate
player.is_ws = is_ws
player.addr = addr

t_info.game_table.reconnect(player_id)
return true
Expand Down
Loading

0 comments on commit c62e72b

Please sign in to comment.