huahua132 / skynet_fly

基于云风的skynet,搭建开箱即用的微服务框架,提供优雅的服务热更新
https://huahua132.github.io/2023/02/25/skynet_fly_word/word_1/A_home/
MIT License
448 stars 78 forks source link

常驻的table如何热更 #12

Closed bluesky0521 closed 9 months ago

bluesky0521 commented 10 months ago

我想在第一个玩家进入后只创建一个桌子,之后所有玩家都进去这个桌子,于是我这么写

enter = function(player_id)
            if not m_player_list[player_id] then
                log.info("进入房间成功 ", player_id)
                m_player_list[player_id] = player:new()
                m_player_list[player_id]:init(player_id)
                if m_finish_init ~= true then
                    m_finish_init = true
                    timer:new(timer.second * 3, 1, function()
                        skynet.fork(game_start)
                    end)
                end
            else
                log.info("断线重连 ", player_id)
            end

            return 0
        end,

但是热更失效了,代码和配置都无法热更新。我这种写法有问题吗?

huahua132 commented 10 months ago

仅仅提供了服务替换热更,旧服务热更情况比较复杂,写代码需要做约束才能较好的达到正确热更的目的。