refactor(rpc): 重构 RPC 客户端并优化日志记录

- 在 rpc 包中添加了 g.Log() 调用,用于记录 RPC 服务器启动和错误信息
- 重构了 controller 包,将 LogicClient 从 Controller 结构体中分离出来
- 优化了 login 控制器中的 Login 方法,增加了新客户端的创建和数据发送逻辑
- 简化了 systemtime 控制器中的 SystemTimeInfo 方法
- 更新了 server.go 中的 Start 函数,使用 new(controller.LogicClient) 替代 controller.Maincontroller
This commit is contained in:
2025-07-25 23:37:02 +08:00
parent 449552bea7
commit cb87fda0d1
7 changed files with 54 additions and 9 deletions

View File

@@ -8,6 +8,7 @@ import (
"net/http" "net/http"
"github.com/filecoin-project/go-jsonrpc" "github.com/filecoin-project/go-jsonrpc"
"github.com/gogf/gf/v2/frame/g"
) )
const rpcaddr = "127.0.0.1:40000" const rpcaddr = "127.0.0.1:40000"
@@ -70,13 +71,13 @@ func StartServer() {
rpcServer := jsonrpc.NewServer(jsonrpc.WithReverseClient[ClientHandler]("")) rpcServer := jsonrpc.NewServer(jsonrpc.WithReverseClient[ClientHandler](""))
rpcServer.Register("", &ServerHandler{}) rpcServer.Register("", &ServerHandler{})
g.Log().Debug(context.Background(), "jsonrpc server start")
// go time.AfterFunc(3000, func() { // go time.AfterFunc(3000, func() {
// testjsonrpc() // testjsonrpc()
// }) // })
err := http.ListenAndServe(rpcaddr, rpcServer) err := http.ListenAndServe(rpcaddr, rpcServer)
fmt.Println(err) g.Log().Debug(context.Background(), "jsonrpc server fail", err)
} }
var closer jsonrpc.ClientCloser var closer jsonrpc.ClientCloser

View File

@@ -32,13 +32,16 @@ type Controller struct {
} }
} }
func (h *Controller) KickPerson(a int) error { type LogicClient struct {
}
func (h *LogicClient) KickPerson(a int) error {
fmt.Println("检测到踢人请求", a) fmt.Println("检测到踢人请求", a)
service.KickPlayer(uint32(a)) service.KickPlayer(uint32(a))
return nil return nil
} }
func (h *Controller) QuitSelf(a int) error { func (h *LogicClient) QuitSelf(a int) error {
//TODO 这里待退出 //TODO 这里待退出
fmt.Println("检测到退出请求") fmt.Println("检测到退出请求")
@@ -203,12 +206,10 @@ func Recv(c gnet.Conn, data handler.TomeeHeader) {
ret := cmdlister.Call(params) ret := cmdlister.Call(params)
r := entity.NewConn(c) //这里实现新增客户端
if len(ret) <= 0 { //如果判断没有参数,那就说明这个包没有返回参数 if len(ret) <= 0 { //如果判断没有参数,那就说明这个包没有返回参数
return return
} }
r := entity.NewConn(c) //这里实现新增客户端
aa, ok := ret[1].Interface().(service.OutInfo) //判断错误 aa, ok := ret[1].Interface().(service.OutInfo) //判断错误
if ok && aa != nil { //这里实现回复错误包 if ok && aa != nil { //这里实现回复错误包

View File

@@ -1,6 +1,7 @@
package controller package controller
import ( import (
"blazing/common/data/entity"
"blazing/common/data/share" "blazing/common/data/share"
"blazing/logic/service" "blazing/logic/service"
"blazing/logic/service/login" "blazing/logic/service/login"
@@ -20,8 +21,13 @@ func (h *Controller) Login(data *login.LoginSidInfo, c gnet.Conn) (result *maps.
share.ShareManager.SetUserOnline(data.Head.UserID, h.Port) //设置用户登录服务器 share.ShareManager.SetUserOnline(data.Head.UserID, h.Port) //设置用户登录服务器
t.CompleteLogin() //通知客户端登录成功 t.CompleteLogin() //通知客户端登录成功
c.Write(data.Def()) //TODO 这里实现fake数据
r := entity.NewConn(c) //这里实现新增客户端
r.SendPack(data.Def())
} else {
err = &login.LoginErr{}
return
} }
return return
} }

View File

@@ -8,5 +8,6 @@ import (
func (h Controller) SystemTimeInfo(data *SystemTime.InInfo, c *entity.Player) (result *SystemTime.OutInfo, err service.OutInfo) { func (h Controller) SystemTimeInfo(data *SystemTime.InInfo, c *entity.Player) (result *SystemTime.OutInfo, err service.OutInfo) {
result = SystemTime.NewOutInfo() result = SystemTime.NewOutInfo()
return return
} }

View File

@@ -72,7 +72,7 @@ func Start(serverid uint16) {
} }
// go func() { // go func() {
t := rpc.StartClient(serverid, uint16(port), controller.Maincontroller) t := rpc.StartClient(serverid, uint16(port), new(controller.LogicClient))
//TODO 待实现掉线重新连接login //TODO 待实现掉线重新连接login
controller.Maincontroller.RPCClient = *t //将RPC赋值Start controller.Maincontroller.RPCClient = *t //将RPC赋值Start
controller.Maincontroller.Port = uint16(port) //赋值服务器ID controller.Maincontroller.Port = uint16(port) //赋值服务器ID

View File

@@ -0,0 +1,17 @@
package SystemTime
import "blazing/common/socket/errorcode"
type TimeErr struct {
}
func (h *TimeErr) Code() errorcode.ErrorCode {
return errorcode.ErrorCodes.ErrInvalidPassword
}
func (h *TimeErr) Error() string {
return "登录失败"
}

View File

@@ -0,0 +1,19 @@
package login
import (
"blazing/common/socket/errorcode"
)
type LoginErr struct {
}
func (h *LoginErr) Code() errorcode.ErrorCode {
return errorcode.ErrorCodes.ErrLoginFailed
}
func (h *LoginErr) Error() string {
return "登录失败"
}