MCSManager icon indicating copy to clipboard operation
MCSManager copied to clipboard

按需自动启动实例功能

Open ColdeZhang opened this issue 2 years ago • 13 comments

源自此项目的启发 Minecraft-Server-Sleep-Manager

允许在超过三十分钟没有玩家在线时自动关闭服务器进入休眠状态,当有玩家尝试链接(包括 ping 行为)自动启动服务器,以此节约服务器资源。 缺点:对较大的整合包服务器不是特别友好(因为启动慢)玩家无法快速加入需要等待较长的时间。

我把这个特性加入到了 MCSM 的功能中,不知道官方是否有意接受此功能的合并。

MCSM-UI MCSM-Daemon MCSManager

ColdeZhang avatar Dec 12 '23 07:12 ColdeZhang

是否会导致在休眠后第一次尝试连接时直接掉线?

另外,如果要合并,你可以在GitHub fork并提pr。要使用你的自建git合并有点麻烦的(

Bluemangoo avatar Dec 12 '23 09:12 Bluemangoo

是否会导致在休眠后第一次尝试连接时直接掉线?

对 因为本质上休眠就是关闭了服务器,会在同端口启动一个socket监听连接请求。玩家在打开服务器列表的时候拉取服务器状态(ping行为)也会触发启动,对于原版服务器核心来说基本可以做到无感,但是对mod核心可能不是特别友好,大概率会出现第一次连接的时候会返回一个“服务器正在启动”的错误。

另外,如果要合并,你可以在GitHub fork并提pr。要使用你的自建git合并有点麻烦的(

是的 我的自建git不太方便合并到此仓库 如果对此功能感兴趣我会在Github拉取一个fork并提交pr ;)

ColdeZhang avatar Dec 12 '23 09:12 ColdeZhang

很有意思的功能,但是MCSM的未来可能会是一个通用型的管理面板,也正在计划支持大部分 Steam 游戏,这种与 Minecraft 深度绑定的功能不是优先项(主要还是因为 MC 的服务端种类太多,各种配置文件深度绑定困难大),在以后如果有很多人感兴趣或者需要时再说吧。

yumao233 avatar Dec 12 '23 09:12 yumao233

很有意思的功能,但是MCSM的未来可能会是一个通用型的管理面板,也正在计划支持大部分 Steam 游戏,这种与 Minecraft 深度绑定的功能不是优先项(主要还是因为 MC 的服务端种类太多,各种配置文件深度绑定困难大),在以后如果有很多人感兴趣或者需要时再说吧。

好嘞👌

ColdeZhang avatar Dec 12 '23 09:12 ColdeZhang

另外,我还是希望你还是能将代码在 Github 上开源,这样如果哪一天我们确实需要这个功能,我也会再询问你有没有兴趣来提交PR。

yumao233 avatar Dec 12 '23 09:12 yumao233

另外,我还是希望你还是能将代码在 Github 上开源,这样如果哪一天我们确实需要这个功能,我也会再询问你有没有兴趣来提交PR。

:) 好的 晚些时候我会在Github fork官方仓库并将我的更改镜像到fork上

ColdeZhang avatar Dec 12 '23 09:12 ColdeZhang

GitHub上关于此功能的镜像仓库地址如下:

https://github.com/DeerGiteaMirror/MCSM-UI https://github.com/DeerGiteaMirror/MCSM-Daemon

ColdeZhang avatar Dec 12 '23 11:12 ColdeZhang

很有意思的功能,但是MCSM的未来可能会是一个通用型的管理面板,也正在计划支持大部分 Steam 游戏,这种与 Minecraft 深度绑定的功能不是优先项(主要还是因为 MC 的服务端种类太多,各种配置文件深度绑定困难大),在以后如果有很多人感兴趣或者需要时再说吧。

hello 我又来了

为了提高此功能的通用性以适合MCSM未来的开发计划,这两天我对此功能进行了一定的修改。监控实例的活跃逻辑(判断标准)由在线玩家数量修改为网络连接数,这样理论上可以支持所有以tcp协议提供服务的游戏。不过由于udp协议是无状态协议,因此此方案缺点是无法支持udp协议的游戏(如csgo、mcbe)。

不知道对于udp协议的游戏有没有什么其他办法?

https://github.com/DeerGiteaMirror/MCSM-Daemon/commit/e6e6b69211164658a30ed1d5598f05a9aa2dc007

ColdeZhang avatar Dec 14 '23 08:12 ColdeZhang

UDP的话,看第一个报文的内容咯

Mr-Ao-Dragon avatar Dec 21 '23 05:12 Mr-Ao-Dragon

直接转发逻辑,转到了且不在线就唤醒啊。转发,try-catch块里面写唤醒逻辑。这个看性能了,node的转发好像有点耗。

你转发服务器一直在监听当反代就好了。

Bluemangoo avatar Dec 21 '23 09:12 Bluemangoo

直接转发逻辑,转到了且不在线就唤醒啊。转发,try-catch块里面写唤醒逻辑。这个看性能了,node的转发好像有点耗。

你转发服务器一直在监听当反代就好了。

转发不太行,测了一下延迟比较高,一个玩家的时候大概就有个七十多毫秒。

ColdeZhang avatar Dec 21 '23 09:12 ColdeZhang

直接转发逻辑,转到了且不在线就唤醒啊。转发,try-catch块里面写唤醒逻辑。这个看性能了,node的转发好像有点耗。 你转发服务器一直在监听当反代就好了。

转发不太行,测了一下延迟比较高,一个玩家的时候大概就有个七十多毫秒。

是拿node转发导致的。不如写nginx插件去。

Bluemangoo avatar Dec 21 '23 09:12 Bluemangoo

另外,我还是希望你还是能将代码在 Github 上开源,这样如果哪一天我们确实需要这个功能,我也会再询问你有没有兴趣来提交PR。

我认为这可以作为选择为javaMC服务器的独享功能,就和统计mc人数一样 image

Shapaper avatar Dec 30 '23 14:12 Shapaper