From cab6a2d07bd1b2b6b24fd7e7eb32015521e0dfae Mon Sep 17 00:00:00 2001 From: zhaocy Date: Fri, 17 Jun 2022 16:59:44 +0800 Subject: [PATCH] =?UTF-8?q?robot=E7=BB=9F=E4=B8=80=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/robot/login.go | 2 +- cmd/robot/notify.go | 26 ++++++++++++++++++++++++++ cmd/robot/robot.go | 2 ++ comm/core.go | 7 ++++++- modules/gateway/agent.go | 21 +++++++++++++-------- 5 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 cmd/robot/notify.go diff --git a/cmd/robot/login.go b/cmd/robot/login.go index 2d681455f..4c8b18820 100644 --- a/cmd/robot/login.go +++ b/cmd/robot/login.go @@ -33,7 +33,6 @@ func (r *Robot) BuildSecStr() string { //处理登录请求 func (r *Robot) AccountLogin() { //登录 - // sec := r.BuildSecStr() // log.Printf("client secret key:%s", sec) loginReg := &pb.UserLoginReq{ Account: r.opts.Account, @@ -43,6 +42,7 @@ func (r *Robot) AccountLogin() { head := &pb.UserMessage{ MainType: "user", SubType: "login", + Sec: r.BuildSecStr(), } defer traceFunc(head.MainType, head.SubType, "0", loginReg) err := r.SendToClient(head, loginReg) diff --git a/cmd/robot/notify.go b/cmd/robot/notify.go new file mode 100644 index 000000000..e1808b2a7 --- /dev/null +++ b/cmd/robot/notify.go @@ -0,0 +1,26 @@ +package robot + +import ( + "fmt" + "go_dreamfactory/comm" + "go_dreamfactory/pb" +) + +//统一通知处理 +func (r *Robot) handleNotifyMsg(msg *pb.UserMessage) { + switch msg.SubType { + case comm.SubType_ErrorNotify: + r.handleError(msg) + default: + fmt.Printf("subType: %s not define", msg.SubType) + } +} + +//处理错误 +func (r *Robot) handleError(msg *pb.UserMessage) { + rsp := &pb.ErrorNotify{} + if !comm.ProtoUnmarshal(msg, rsp) { + return + } + printReply(msg, rsp) +} diff --git a/cmd/robot/robot.go b/cmd/robot/robot.go index 6745deff4..ccf1a0dce 100644 --- a/cmd/robot/robot.go +++ b/cmd/robot/robot.go @@ -75,6 +75,8 @@ func (r *Robot) handleMsg(msg *pb.UserMessage) { r.handleFriendMsg(msg) case "pack": r.handlePackMsg(msg) + case comm.MainType_Notify: + r.handleNotifyMsg(msg) default: log.Fatal("module route no exist") } diff --git a/comm/core.go b/comm/core.go index cefa0bc63..fddbb0a6b 100644 --- a/comm/core.go +++ b/comm/core.go @@ -8,7 +8,6 @@ import ( "go_dreamfactory/lego/core" "go_dreamfactory/lego/sys/log" - "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" ) @@ -22,6 +21,12 @@ const ( Service_Worker = "worker" ) +//ERR +const ( + MainType_Notify = "notify" //通知 + SubType_ErrorNotify = "errornotify" //错误通知 +) + //模块名定义处 const ( SM_GateModule core.M_Modules = "gateway" //gate模块 网关服务模块 diff --git a/modules/gateway/agent.go b/modules/gateway/agent.go index a39b64294..02a74c489 100644 --- a/modules/gateway/agent.go +++ b/modules/gateway/agent.go @@ -76,12 +76,15 @@ locp: } else { err = this.secAuth(msg) if err == nil { - this.messageDistribution(msg) + if err := this.messageDistribution(msg); err != nil { + go this.Close() + break locp + } } else { data, _ := anypb.New(&pb.ErrorNotify{ReqMainType: msg.MainType, ReqSubType: msg.SubType, Code: pb.ErrorCode_SecKeyInvalid}) if err = this.WriteMsg(&pb.UserMessage{ - MainType: "notify", - SubType: "errornotify", + MainType: comm.MainType_Notify, + SubType: comm.SubType_ErrorNotify, Data: data, }); err != nil { go this.Close() @@ -201,7 +204,7 @@ func (this *Agent) Close() { } //分发用户消息 -func (this *Agent) messageDistribution(msg *pb.UserMessage) { +func (this *Agent) messageDistribution(msg *pb.UserMessage) error { reply := &pb.RPCMessageReply{} log.Debugf("agent:%s uId:%s MessageDistribution msg:%s.%s", this.sessionId, this.uId, msg.MainType, msg.SubType) if err := this.gateway.Service().RpcCall(context.Background(), comm.Service_Worker, string(comm.Rpc_GatewayRoute), &pb.AgentMessage{ @@ -213,14 +216,16 @@ func (this *Agent) messageDistribution(msg *pb.UserMessage) { Message: msg.Data, }, reply); err != nil { log.Errorf("agent:%s uId:%s MessageDistribution err:%v", this.sessionId, this.uId, err) - return + return err } if reply.Code != pb.ErrorCode_Success { data, _ := anypb.New(&pb.ErrorNotify{ReqMainType: msg.MainType, ReqSubType: msg.SubType, Code: reply.Code}) - this.WriteMsg(&pb.UserMessage{ - MainType: "notify", - SubType: "errornotify", + err := this.WriteMsg(&pb.UserMessage{ + MainType: comm.MainType_Notify, + SubType: comm.SubType_ErrorNotify, Data: data, }) + return err } + return nil }