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"
|
"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
|
||||||
|
|||||||
@@ -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 { //这里实现回复错误包
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
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