```
feat(socket): 添加服务器优雅退出机制 在 Server 结构体中新增 quit 字段,并在 OnTick 方法中检查该字段, 若为 true 则调用 os.Exit(0) 实现程序正常退出。同时清理了 controller 中 冗余的导入和无用逻辑,优化 server 启动流程并修复 RPC 客户端传递错误问题。 ```
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
@@ -60,6 +61,10 @@ func (s *Server) OnClose(c gnet.Conn, _ error) (action gnet.Action) {
|
||||
}
|
||||
func (s *Server) OnTick() (delay time.Duration, action gnet.Action) {
|
||||
cool.Loger.Infof(context.Background(), "[connected-count=%v]", atomic.LoadInt64(&s.connected))
|
||||
if s.quit {
|
||||
//执行正常退出逻辑
|
||||
os.Exit(0)
|
||||
}
|
||||
return 10 * time.Second, gnet.None
|
||||
}
|
||||
func (s *Server) OnBoot(eng gnet.Engine) gnet.Action {
|
||||
|
||||
@@ -23,6 +23,7 @@ type Server struct {
|
||||
codec codec.SocketCodec
|
||||
handler Handler
|
||||
discorse bool
|
||||
quit bool
|
||||
}
|
||||
|
||||
type Option func(*Server)
|
||||
|
||||
19
common/socket/kick.go
Normal file
19
common/socket/kick.go
Normal file
@@ -0,0 +1,19 @@
|
||||
package socket
|
||||
|
||||
import (
|
||||
"blazing/logic/service/player"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func (h *Server) KickPerson(a int) error {
|
||||
|
||||
fmt.Println("检测到踢人请求", a)
|
||||
player.KickPlayer(uint32(a))
|
||||
return nil
|
||||
}
|
||||
func (h *Server) QuitSelf(a int) error {
|
||||
//TODO 这里待退出
|
||||
fmt.Println("检测到退出请求")
|
||||
h.quit = true
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user