From 7f16b94f9ccdf352687704fae79992b47b7c4aba Mon Sep 17 00:00:00 2001 From: "DESKTOP-V763RJ7\\Administrator" <835606593@qq.com> Date: Mon, 12 Jan 2026 12:20:09 +0800 Subject: [PATCH] =?UTF-8?q?feat=20sc=E6=94=B9=E5=90=8Dss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- go.mod | 2 +- go.sum | 2 ++ internal/grpc_server/server/server.go | 12 +++++------ internal/handler/http_handler/login_test.go | 13 ++++++------ .../ws_handler/client/client_handler.go | 20 +++++++++---------- .../handler/ws_handler/client/client_write.go | 10 +++++----- internal/handler/ws_handler/login/login.go | 20 +++++++++---------- 7 files changed, 41 insertions(+), 38 deletions(-) diff --git a/go.mod b/go.mod index 52c42d8..b623d75 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.23.1 require ( bou.ke/monkey v1.0.2 - git.hlsq.asia/mmorpg/service-common v0.0.0-20260112035311-ec291d4332e5 + git.hlsq.asia/mmorpg/service-common v0.0.0-20260112040622-d433cd03a956 github.com/alicebob/miniredis/v2 v2.35.0 github.com/gin-contrib/cors v1.7.6 github.com/gin-gonic/gin v1.11.0 diff --git a/go.sum b/go.sum index af84a0a..92c55dc 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,8 @@ git.hlsq.asia/mmorpg/service-common v0.0.0-20260112034651-8c09b125a49d h1:R74eiD git.hlsq.asia/mmorpg/service-common v0.0.0-20260112034651-8c09b125a49d/go.mod h1:xv6m1I2jUA6mudKVznygpnzMoshBQarthHD1QnkW4qc= git.hlsq.asia/mmorpg/service-common v0.0.0-20260112035311-ec291d4332e5 h1:SauhRmcRxeQj/luQRyIt9iHORp/U9cpm2I5o65rUeGg= git.hlsq.asia/mmorpg/service-common v0.0.0-20260112035311-ec291d4332e5/go.mod h1:xv6m1I2jUA6mudKVznygpnzMoshBQarthHD1QnkW4qc= +git.hlsq.asia/mmorpg/service-common v0.0.0-20260112040622-d433cd03a956 h1:UfdH/8hH1MOnWzsMEvI8e31O7u5IJO5NaJjgK+BR1iY= +git.hlsq.asia/mmorpg/service-common v0.0.0-20260112040622-d433cd03a956/go.mod h1:xv6m1I2jUA6mudKVznygpnzMoshBQarthHD1QnkW4qc= github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0= github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/alicebob/miniredis/v2 v2.35.0 h1:QwLphYqCEAo1eu1TqPRN2jgVMPBweeQcR21jeqDCONI= diff --git a/internal/grpc_server/server/server.go b/internal/grpc_server/server/server.go index 30fb925..425a76a 100644 --- a/internal/grpc_server/server/server.go +++ b/internal/grpc_server/server/server.go @@ -4,7 +4,7 @@ import ( "context" "git.hlsq.asia/mmorpg/service-common/log" "git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb" - "git.hlsq.asia/mmorpg/service-common/proto/sc/sc_pb" + "git.hlsq.asia/mmorpg/service-common/proto/ss/ss_pb" "git.hlsq.asia/mmorpg/service-gateway/internal/handler/ws_handler/client" "google.golang.org/protobuf/proto" "sync" @@ -28,11 +28,11 @@ func (s *Server) ToClient(server grpc_pb.Gateway_ToClientServer) error { //utils.WorkerPool(ws_handler.UserMgr.GetAllInterface(), func(task interface{}) { // client := task.(*ws_handler.Client) - // client.WriteBytes(sc_pb.MessageID(args.MessageID), args.Payload) + // client.WriteBytes(ss_pb.MessageID(args.MessageID), args.Payload) //}) - data, err := proto.Marshal(&sc_pb.Message{ - ID: sc_pb.MessageID(args.MessageID), + data, err := proto.Marshal(&ss_pb.Message{ + ID: ss_pb.MessageID(args.MessageID), Payload: args.Payload, }) if err != nil { @@ -44,11 +44,11 @@ func (s *Server) ToClient(server grpc_pb.Gateway_ToClientServer) error { } //for _, client := range ws_handler.UserMgr.GetAll() { - // client.WriteBytes(sc_pb.MessageID(args.MessageID), args.Payload) + // client.WriteBytes(ss_pb.MessageID(args.MessageID), args.Payload) //} } else { if cli := client.UserMgr.GetByUSN(args.USN); cli != nil { - cli.WriteBytes(sc_pb.MessageID(args.MessageID), args.Payload) + cli.WriteBytes(ss_pb.MessageID(args.MessageID), args.Payload) } } } diff --git a/internal/handler/http_handler/login_test.go b/internal/handler/http_handler/login_test.go index 6e2a9f1..402cc85 100644 --- a/internal/handler/http_handler/login_test.go +++ b/internal/handler/http_handler/login_test.go @@ -7,8 +7,8 @@ import ( "git.hlsq.asia/mmorpg/service-common/db/redis" "git.hlsq.asia/mmorpg/service-common/net/grpc/service" "git.hlsq.asia/mmorpg/service-common/net/http/http_resp" - "git.hlsq.asia/mmorpg/service-common/proto/ss/grpc_pb" - "git.hlsq.asia/mmorpg/service-common/proto/ss/grpc_pb/mocks" + "git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb" + "git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb/mocks" "git.hlsq.asia/mmorpg/service-common/utils" "git.hlsq.asia/mmorpg/service-gateway/internal/global" "git.hlsq.asia/mmorpg/service-gateway/internal/testutil" @@ -18,6 +18,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" "net/http" + "strconv" "testing" ) @@ -27,7 +28,7 @@ type LoginTestSuite struct { func (ts *LoginTestSuite) TestGenToken() { usn := utils.RandInt(1, 100000000) - at, rt, err := genToken(context.Background(), int64(usn)) + at, rt, err := genToken(context.Background(), strconv.Itoa(usn)) ts.Assert().NoError(err) redisAt := redis.GetClient().Get(context.Background(), fmt.Sprintf(global.KeyGatewayAccessToken, usn)).Val() @@ -89,7 +90,7 @@ func (ts *LoginTestSuite) TestLogin() { client := mocks.NewMockUserClient(ctrl) client.EXPECT(). Login(gomock.Any(), gomock.Any()). - Return(&grpc_pb.LoginResp{USN: 1, Name: "hh"}, nil) + Return(&grpc_pb.LoginResp{USN: "1", Name: "hh"}, nil) monkey.Patch(service.UserNewClientLB, func() (grpc_pb.UserClient, error) { return client, nil @@ -132,7 +133,7 @@ func (ts *LoginTestSuite) TestRefreshToken() { ts.Run("Redis Get Failed", func() { monkey.Patch(utils.ParseToken, func(tokenString string, secret string) (*utils.Claims, error) { if tokenString == "abc" { - return &utils.Claims{USN: 1}, nil + return &utils.Claims{USN: "1"}, nil } return nil, assert.AnError }) @@ -150,7 +151,7 @@ func (ts *LoginTestSuite) TestRefreshToken() { ts.Run("OK", func() { monkey.Patch(utils.ParseToken, func(tokenString string, secret string) (*utils.Claims, error) { if tokenString == "abc" { - return &utils.Claims{USN: 1}, nil + return &utils.Claims{USN: "1"}, nil } return nil, assert.AnError }) diff --git a/internal/handler/ws_handler/client/client_handler.go b/internal/handler/ws_handler/client/client_handler.go index b47dbd7..696436a 100644 --- a/internal/handler/ws_handler/client/client_handler.go +++ b/internal/handler/ws_handler/client/client_handler.go @@ -6,7 +6,7 @@ import ( "git.hlsq.asia/mmorpg/service-common/db/redis" "git.hlsq.asia/mmorpg/service-common/net/grpc/service" "git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb" - "git.hlsq.asia/mmorpg/service-common/proto/sc/sc_pb" + "git.hlsq.asia/mmorpg/service-common/proto/ss/ss_pb" "git.hlsq.asia/mmorpg/service-gateway/internal/global" "git.hlsq.asia/mmorpg/service-gateway/internal/grpc_server/stream_client" "google.golang.org/protobuf/proto" @@ -16,23 +16,23 @@ import ( func (c *Client) handle(event Event) { switch e := event.(type) { case *ClientEvent: - msg := &sc_pb.Message{} + msg := &ss_pb.Message{} if err := proto.Unmarshal(e.Msg, msg); err != nil { c.logger.Errorf("handle event proto.Unmarshal err: %v", err) c.cancel() return } switch msg.ID { - case sc_pb.MessageID_MESSAGE_ID_ENTER_INSTANCE: - m := &sc_pb.C2S_EnterInstance{} + case ss_pb.MessageID_MESSAGE_ID_ENTER_INSTANCE: + m := &ss_pb.C2S_EnterInstance{} if err := proto.Unmarshal(msg.Payload, m); err != nil { c.logger.Errorf("handle event proto.Unmarshal err: %v", err) c.cancel() return } c.onEnter(m) - case sc_pb.MessageID_MESSAGE_ID_ACTION: - m := &sc_pb.C2S_Action{} + case ss_pb.MessageID_MESSAGE_ID_ACTION: + m := &ss_pb.C2S_Action{} if err := proto.Unmarshal(msg.Payload, m); err != nil { c.logger.Errorf("handle event proto.Unmarshal err: %v", err) c.cancel() @@ -47,14 +47,14 @@ func (c *Client) handle(event Event) { c.Status = 1 UserMgr.Add(c.USN, c) redis.GetClient().HSet(c.ctx, fmt.Sprintf(global.KeyGatewayInfo, c.USN), global.HFieldInfoGatewaySID, GatewaySID) - c.WriteMessage(sc_pb.MessageID_MESSAGE_ID_LOGIN_SUCCESS, &sc_pb.S2C_LoginSuccess{ + c.WriteMessage(ss_pb.MessageID_MESSAGE_ID_LOGIN_SUCCESS, &ss_pb.S2C_LoginSuccess{ InstanceID: 1, }) } } } -func (c *Client) onEnter(msg *sc_pb.C2S_EnterInstance) { +func (c *Client) onEnter(msg *ss_pb.C2S_EnterInstance) { client, err := service.SceneNewClientLB() if err != nil { c.logger.Errorf("SceneNewClient err: %v", err) @@ -72,7 +72,7 @@ func (c *Client) onEnter(msg *sc_pb.C2S_EnterInstance) { c.SceneSID = resp.SceneSID c.UniqueNo = resp.UniqueNo c.InstanceID = msg.InstanceID - c.WriteBytes(sc_pb.MessageID(resp.MessageID), resp.Payload) + c.WriteBytes(ss_pb.MessageID(resp.MessageID), resp.Payload) } func (c *Client) onLeave() { @@ -94,7 +94,7 @@ func (c *Client) onLeave() { } } -func (c *Client) onAction(msg *sc_pb.C2S_Action) { +func (c *Client) onAction(msg *ss_pb.C2S_Action) { if c.SceneSID == "" { return } diff --git a/internal/handler/ws_handler/client/client_write.go b/internal/handler/ws_handler/client/client_write.go index de6563d..8a6362c 100644 --- a/internal/handler/ws_handler/client/client_write.go +++ b/internal/handler/ws_handler/client/client_write.go @@ -1,12 +1,12 @@ package client import ( - "git.hlsq.asia/mmorpg/service-common/proto/sc/sc_pb" + "git.hlsq.asia/mmorpg/service-common/proto/ss/ss_pb" "google.golang.org/protobuf/proto" ) // WriteMessage 向客户端发送消息 -func (c *Client) WriteMessage(id sc_pb.MessageID, data proto.Message) { +func (c *Client) WriteMessage(id ss_pb.MessageID, data proto.Message) { if c.conn == nil || c.conn.IsClose() { return } @@ -15,7 +15,7 @@ func (c *Client) WriteMessage(id sc_pb.MessageID, data proto.Message) { c.logger.Errorf("WriteMessage proto.Marshal err: %v", err) return } - m, err := proto.Marshal(&sc_pb.Message{ + m, err := proto.Marshal(&ss_pb.Message{ ID: id, Payload: d, }) @@ -29,11 +29,11 @@ func (c *Client) WriteMessage(id sc_pb.MessageID, data proto.Message) { } // WriteBytes 向客户端发送字节数据 -func (c *Client) WriteBytes(id sc_pb.MessageID, data []byte) { +func (c *Client) WriteBytes(id ss_pb.MessageID, data []byte) { if c.conn == nil || c.conn.IsClose() { return } - m, err := proto.Marshal(&sc_pb.Message{ + m, err := proto.Marshal(&ss_pb.Message{ ID: id, Payload: data, }) diff --git a/internal/handler/ws_handler/login/login.go b/internal/handler/ws_handler/login/login.go index 63cefeb..e2ad47b 100644 --- a/internal/handler/ws_handler/login/login.go +++ b/internal/handler/ws_handler/login/login.go @@ -7,7 +7,7 @@ import ( "git.hlsq.asia/mmorpg/service-common/log" "git.hlsq.asia/mmorpg/service-common/net/grpc/service" "git.hlsq.asia/mmorpg/service-common/proto/rs/grpc_pb" - "git.hlsq.asia/mmorpg/service-common/proto/sc/sc_pb" + "git.hlsq.asia/mmorpg/service-common/proto/ss/ss_pb" "git.hlsq.asia/mmorpg/service-gateway/internal/global" "git.hlsq.asia/mmorpg/service-gateway/internal/handler/ws_handler/client" "sync" @@ -108,8 +108,8 @@ func (l *Login) Stop() { // StartLogin 开始登录流程 func (l *Login) StartLogin(user *User) { if !l.CheckToken(user) { - user.Cli.WriteMessage(sc_pb.MessageID_MESSAGE_ID_KICK_OUT, &sc_pb.S2C_KickOut{ - ID: sc_pb.KickOutID_KICK_OUT_ID_TOKEN_INVALID, + user.Cli.WriteMessage(ss_pb.MessageID_MESSAGE_ID_KICK_OUT, &ss_pb.S2C_KickOut{ + ID: ss_pb.KickOutID_KICK_OUT_ID_TOKEN_INVALID, }) user.Cli.CloseClient() return @@ -117,8 +117,8 @@ func (l *Login) StartLogin(user *User) { if gatewaySID := l.CheckOnline(user); len(gatewaySID) > 0 { // 如果在线就要踢,如果踢失败了就返回服务器繁忙,一般不应该走到这里 if !l.KickUser(user.Cli.SceneSID, user.Cli.USN) { - user.Cli.WriteMessage(sc_pb.MessageID_MESSAGE_ID_KICK_OUT, &sc_pb.S2C_KickOut{ - ID: sc_pb.KickOutID_KICK_OUT_ID_SERVER_BUSY, + user.Cli.WriteMessage(ss_pb.MessageID_MESSAGE_ID_KICK_OUT, &ss_pb.S2C_KickOut{ + ID: ss_pb.KickOutID_KICK_OUT_ID_SERVER_BUSY, }) user.Cli.CloseClient() return @@ -127,8 +127,8 @@ func (l *Login) StartLogin(user *User) { if client.UserMgr.GetSize() >= global.MaxOnlineSize { // 如果人数满了就排队 if err := GetQueueUp().Enqueue(user.Cli); err != nil { - user.Cli.WriteMessage(sc_pb.MessageID_MESSAGE_ID_KICK_OUT, &sc_pb.S2C_KickOut{ - ID: sc_pb.KickOutID_KICK_OUT_ID_QUEUE_UP_FULL, + user.Cli.WriteMessage(ss_pb.MessageID_MESSAGE_ID_KICK_OUT, &ss_pb.S2C_KickOut{ + ID: ss_pb.KickOutID_KICK_OUT_ID_QUEUE_UP_FULL, }) user.Cli.CloseClient() return @@ -136,13 +136,13 @@ func (l *Login) StartLogin(user *User) { // 告诉客户端正在排队 position, ok := GetQueueUp().GetPosition(user.Cli.USN) if !ok { - user.Cli.WriteMessage(sc_pb.MessageID_MESSAGE_ID_KICK_OUT, &sc_pb.S2C_KickOut{ - ID: sc_pb.KickOutID_KICK_OUT_ID_SERVER_BUSY, + user.Cli.WriteMessage(ss_pb.MessageID_MESSAGE_ID_KICK_OUT, &ss_pb.S2C_KickOut{ + ID: ss_pb.KickOutID_KICK_OUT_ID_SERVER_BUSY, }) user.Cli.CloseClient() return } - user.Cli.WriteMessage(sc_pb.MessageID_MESSAGE_ID_QUEUE_UP, &sc_pb.S2C_QueueUp{ + user.Cli.WriteMessage(ss_pb.MessageID_MESSAGE_ID_QUEUE_UP, &ss_pb.S2C_QueueUp{ QueueUpCount: int32(position), }) } else {