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:
@@ -8,6 +8,7 @@ import (
|
||||
"net/http"
|
||||
|
||||
"github.com/filecoin-project/go-jsonrpc"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
const rpcaddr = "127.0.0.1:40000"
|
||||
@@ -70,13 +71,13 @@ func StartServer() {
|
||||
rpcServer := jsonrpc.NewServer(jsonrpc.WithReverseClient[ClientHandler](""))
|
||||
|
||||
rpcServer.Register("", &ServerHandler{})
|
||||
|
||||
g.Log().Debug(context.Background(), "jsonrpc server start")
|
||||
// go time.AfterFunc(3000, func() {
|
||||
// testjsonrpc()
|
||||
// })
|
||||
|
||||
err := http.ListenAndServe(rpcaddr, rpcServer)
|
||||
fmt.Println(err)
|
||||
g.Log().Debug(context.Background(), "jsonrpc server fail", err)
|
||||
}
|
||||
|
||||
var closer jsonrpc.ClientCloser
|
||||
|
||||
@@ -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)
|
||||
service.KickPlayer(uint32(a))
|
||||
return nil
|
||||
}
|
||||
func (h *Controller) QuitSelf(a int) error {
|
||||
func (h *LogicClient) QuitSelf(a int) error {
|
||||
//TODO 这里待退出
|
||||
fmt.Println("检测到退出请求")
|
||||
|
||||
@@ -203,12 +206,10 @@ func Recv(c gnet.Conn, data handler.TomeeHeader) {
|
||||
|
||||
ret := cmdlister.Call(params)
|
||||
|
||||
r := entity.NewConn(c) //这里实现新增客户端
|
||||
|
||||
if len(ret) <= 0 { //如果判断没有参数,那就说明这个包没有返回参数
|
||||
return
|
||||
}
|
||||
|
||||
r := entity.NewConn(c) //这里实现新增客户端
|
||||
aa, ok := ret[1].Interface().(service.OutInfo) //判断错误
|
||||
|
||||
if ok && aa != nil { //这里实现回复错误包
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package controller
|
||||
|
||||
import (
|
||||
"blazing/common/data/entity"
|
||||
"blazing/common/data/share"
|
||||
"blazing/logic/service"
|
||||
"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) //设置用户登录服务器
|
||||
t.CompleteLogin() //通知客户端登录成功
|
||||
c.Write(data.Def()) //TODO 这里实现fake数据
|
||||
|
||||
r := entity.NewConn(c) //这里实现新增客户端
|
||||
r.SendPack(data.Def())
|
||||
|
||||
} else {
|
||||
err = &login.LoginErr{}
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -8,5 +8,6 @@ import (
|
||||
|
||||
func (h Controller) SystemTimeInfo(data *SystemTime.InInfo, c *entity.Player) (result *SystemTime.OutInfo, err service.OutInfo) {
|
||||
result = SystemTime.NewOutInfo()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ func Start(serverid uint16) {
|
||||
}
|
||||
|
||||
// go func() {
|
||||
t := rpc.StartClient(serverid, uint16(port), controller.Maincontroller)
|
||||
t := rpc.StartClient(serverid, uint16(port), new(controller.LogicClient))
|
||||
//TODO 待实现掉线重新连接login
|
||||
controller.Maincontroller.RPCClient = *t //将RPC赋值Start
|
||||
controller.Maincontroller.Port = uint16(port) //赋值服务器ID
|
||||
|
||||
17
logic/service/SystemTime/TimeErr.go
Normal file
17
logic/service/SystemTime/TimeErr.go
Normal 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 "登录失败"
|
||||
|
||||
}
|
||||
19
logic/service/login/LoginErr.go
Normal file
19
logic/service/login/LoginErr.go
Normal 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 "登录失败"
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user