```
feat(socket): 添加服务器优雅退出机制 在 Server 结构体中新增 quit 字段,并在 OnTick 方法中检查该字段, 若为 true 则调用 os.Exit(0) 实现程序正常退出。同时清理了 controller 中 冗余的导入和无用逻辑,优化 server 启动流程并修复 RPC 客户端传递错误问题。 ```
This commit is contained in:
@@ -6,9 +6,7 @@ import (
|
||||
"blazing/cool"
|
||||
|
||||
"blazing/logic/service/player"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"bytes"
|
||||
"context"
|
||||
@@ -22,6 +20,11 @@ import (
|
||||
)
|
||||
|
||||
var Maincontroller = NewController() //注入service
|
||||
|
||||
func NewController() *Controller {
|
||||
return &Controller{}
|
||||
}
|
||||
|
||||
// 分发cmd逻辑实现Controller
|
||||
type Controller struct {
|
||||
Port uint16
|
||||
@@ -32,40 +35,6 @@ type Controller struct {
|
||||
}
|
||||
}
|
||||
|
||||
type LogicClient struct {
|
||||
}
|
||||
|
||||
func (h *LogicClient) KickPerson(a int) error {
|
||||
|
||||
fmt.Println("检测到踢人请求", a)
|
||||
player.KickPlayer(uint32(a))
|
||||
return nil
|
||||
}
|
||||
func (h *LogicClient) QuitSelf(a int) error {
|
||||
//TODO 这里待退出
|
||||
fmt.Println("检测到退出请求")
|
||||
|
||||
go func() {
|
||||
|
||||
for {
|
||||
|
||||
//entity.ConutPlayer()
|
||||
fmt.Println("当前在线人数", player.ConutPlayer())
|
||||
|
||||
if player.ConutPlayer() <= 0 {
|
||||
//执行退出逻辑
|
||||
os.Exit(1)
|
||||
}
|
||||
<-time.After(5 * time.Second)
|
||||
}
|
||||
}()
|
||||
//service.KickPlayer(uint32(a))
|
||||
return nil
|
||||
}
|
||||
func NewController() *Controller {
|
||||
return &Controller{}
|
||||
}
|
||||
|
||||
func ParseCmd[T any](a T, data []byte) T {
|
||||
// := info.NewLoginSidInfo()
|
||||
struc.Unpack(bytes.NewBuffer(data), &a)
|
||||
|
||||
Reference in New Issue
Block a user