From c1184fd7d28869355c9ebdc8b6e089c0f8688770 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Thu, 11 Aug 2022 11:14:30 +0800 Subject: [PATCH 1/5] Multiple gateways --- internal/msg_gateway/gate/relay_rpc_server.go | 1 + internal/msg_gateway/gate/ws_server.go | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/internal/msg_gateway/gate/relay_rpc_server.go b/internal/msg_gateway/gate/relay_rpc_server.go index 5218fd111..b00129d64 100644 --- a/internal/msg_gateway/gate/relay_rpc_server.go +++ b/internal/msg_gateway/gate/relay_rpc_server.go @@ -304,6 +304,7 @@ func (r *RPCServer) KickUserOffline(_ context.Context, req *pbRelay.KickUserOffl } func (r *RPCServer) MultiTerminalLoginCheck(ctx context.Context, req *pbRelay.MultiTerminalLoginCheckReq) (*pbRelay.MultiTerminalLoginCheckResp, error) { + ws.MultiTerminalLoginCheckerWithLock(req.UserID, int(req.PlatformID), req.Token, req.OperationID) return &pbRelay.MultiTerminalLoginCheckResp{}, nil } diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index b97e552e8..0f00351fc 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -125,6 +125,7 @@ func (ws *WServer) MultiTerminalLoginRemoteChecker(userID string, platformID int log.Debug(operationID, "Filter out this node ", rpcSvr.target) continue } + log.Debug(operationID, "call this node ", v.Target(), rpcSvr.target) client := pbRelay.NewRelayClient(v) req := &pbRelay.MultiTerminalLoginCheckReq{OperationID: operationID, PlatformID: platformID, UserID: userID, Token: token} log.NewInfo(operationID, "MultiTerminalLoginCheckReq ", client, req.String()) @@ -141,6 +142,8 @@ func (ws *WServer) MultiTerminalLoginRemoteChecker(userID string, platformID int func (ws *WServer) MultiTerminalLoginCheckerWithLock(uid string, platformID int, token string, operationID string) { rwLock.Lock() defer rwLock.Unlock() + log.NewInfo(operationID, utils.GetSelfFuncName(), " rpc args: ", uid, platformID, token) + return switch config.Config.MultiLoginPolicy { case constant.AllLoginButSameTermKick: if oldConnMap, ok := ws.wsUserToConn[uid]; ok { // user->map[platform->conn] @@ -268,7 +271,7 @@ func (ws *WServer) addUserConn(uid string, platformID int, conn *UserConn, token if callbackResp.ErrCode != 0 { log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOnline resp:", callbackResp) } - //go ws.MultiTerminalLoginRemoteChecker(uid, int32(platformID), token, operationID) + go ws.MultiTerminalLoginRemoteChecker(uid, int32(platformID), token, operationID) ws.MultiTerminalLoginChecker(uid, platformID, conn, token, operationID) if oldConnMap, ok := ws.wsUserToConn[uid]; ok { oldConnMap[platformID] = conn From 5f83acf3ade386bfdb8729c469be7090b72eeba8 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Thu, 11 Aug 2022 11:25:01 +0800 Subject: [PATCH 2/5] Multiple gateways --- internal/msg_gateway/gate/ws_server.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 0f00351fc..71866963f 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -120,6 +120,7 @@ func (ws *WServer) SetWriteTimeoutWriteMsg(conn *UserConn, a int, msg []byte, ti func (ws *WServer) MultiTerminalLoginRemoteChecker(userID string, platformID int32, token string, operationID string) { grpcCons := getcdv3.GetConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImRelayName) + log.NewInfo(operationID, utils.GetSelfFuncName(), " grpcCons: ", grpcCons) for _, v := range grpcCons { if v.Target() == rpcSvr.target { log.Debug(operationID, "Filter out this node ", rpcSvr.target) From 079fe089de148a3babe0e87cfcef21d207a229bf Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Thu, 11 Aug 2022 11:28:51 +0800 Subject: [PATCH 3/5] Multiple gateways --- internal/msg_gateway/gate/ws_server.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 71866963f..c92aa6a28 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -120,7 +120,7 @@ func (ws *WServer) SetWriteTimeoutWriteMsg(conn *UserConn, a int, msg []byte, ti func (ws *WServer) MultiTerminalLoginRemoteChecker(userID string, platformID int32, token string, operationID string) { grpcCons := getcdv3.GetConn4Unique(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImRelayName) - log.NewInfo(operationID, utils.GetSelfFuncName(), " grpcCons: ", grpcCons) + log.NewInfo(operationID, utils.GetSelfFuncName(), "args grpcCons: ", userID, platformID, grpcCons) for _, v := range grpcCons { if v.Target() == rpcSvr.target { log.Debug(operationID, "Filter out this node ", rpcSvr.target) From eb7e6a566b1c01c33a061e86cfac6db055ec4e19 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Thu, 11 Aug 2022 11:44:14 +0800 Subject: [PATCH 4/5] Multiple gateways --- pkg/grpc-etcdv3/getcdv3/register.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/grpc-etcdv3/getcdv3/register.go b/pkg/grpc-etcdv3/getcdv3/register.go index d30d3a3a7..c9f1b44a9 100644 --- a/pkg/grpc-etcdv3/getcdv3/register.go +++ b/pkg/grpc-etcdv3/getcdv3/register.go @@ -38,8 +38,7 @@ func RegisterEtcd4Unique(schema, etcdAddr, myHost string, myPort int, serviceNam } func GetTarget(schema, myHost string, myPort int, serviceName string) string { - serviceName = serviceName + ":" + net.JoinHostPort(myHost, strconv.Itoa(myPort)) - return serviceName + return GetPrefix(schema, serviceName) + ":" + net.JoinHostPort(myHost, strconv.Itoa(myPort)) + "/" } //etcdAddr separated by commas From 5a0340e927da9de4603f6e2965dae4f9a742ef56 Mon Sep 17 00:00:00 2001 From: skiffer-git <44203734@qq.com> Date: Thu, 11 Aug 2022 11:48:22 +0800 Subject: [PATCH 5/5] Multiple gateways --- pkg/grpc-etcdv3/getcdv3/register.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/grpc-etcdv3/getcdv3/register.go b/pkg/grpc-etcdv3/getcdv3/register.go index c9f1b44a9..aa3ba3072 100644 --- a/pkg/grpc-etcdv3/getcdv3/register.go +++ b/pkg/grpc-etcdv3/getcdv3/register.go @@ -38,7 +38,7 @@ func RegisterEtcd4Unique(schema, etcdAddr, myHost string, myPort int, serviceNam } func GetTarget(schema, myHost string, myPort int, serviceName string) string { - return GetPrefix(schema, serviceName) + ":" + net.JoinHostPort(myHost, strconv.Itoa(myPort)) + "/" + return GetPrefix4Unique(schema, serviceName) + ":" + net.JoinHostPort(myHost, strconv.Itoa(myPort)) + "/" } //etcdAddr separated by commas