From e0ad4e6e7bbaeacb44b708f66b77fdb25546dd62 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 24 Nov 2022 14:20:32 +0800 Subject: [PATCH 1/2] offline --- internal/msg_gateway/gate/ws_server.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 5994bb793..5cce2e303 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -363,7 +363,8 @@ func (ws *WServer) delUserConn(conn *UserConn) { operationID := utils.OperationIDGenerator() var uid string var platform int - if oldStringMap, ok := ws.wsConnToUser[conn]; ok { + var okg bool + if oldStringMap, okg := ws.wsConnToUser[conn]; okg { for k, v := range oldStringMap { platform = k uid = v @@ -389,11 +390,14 @@ func (ws *WServer) delUserConn(conn *UserConn) { if err != nil { log.Error(operationID, " close err", "", "uid", uid, "platform", platform) } - callbackResp := callbackUserOffline(operationID, uid, platform) - if callbackResp.ErrCode != 0 { - log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp) + if okg { + callbackResp := callbackUserOffline(operationID, uid, platform) + if callbackResp.ErrCode != 0 { + log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp) + } + promePkg.PromeGaugeDec(promePkg.OnlineUserGauge) } - promePkg.PromeGaugeDec(promePkg.OnlineUserGauge) + } func (ws *WServer) getUserConn(uid string, platform int) *UserConn { From b235c71c769016b18e408f64e4a301cb766eb1a7 Mon Sep 17 00:00:00 2001 From: Gordon <1432970085@qq.com> Date: Thu, 24 Nov 2022 17:41:27 +0800 Subject: [PATCH 2/2] offline --- internal/msg_gateway/gate/ws_server.go | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go index 5cce2e303..f9a8bf10b 100644 --- a/internal/msg_gateway/gate/ws_server.go +++ b/internal/msg_gateway/gate/ws_server.go @@ -221,7 +221,7 @@ func (ws *WServer) MultiTerminalLoginCheckerWithLock(uid string, platformID int, return } err = oldConn.Close() - delete(oldConnMap, platformID) + //delete(oldConnMap, platformID) ws.wsUserToConn[uid] = oldConnMap if len(oldConnMap) == 0 { delete(ws.wsUserToConn, uid) @@ -363,7 +363,6 @@ func (ws *WServer) delUserConn(conn *UserConn) { operationID := utils.OperationIDGenerator() var uid string var platform int - var okg bool if oldStringMap, okg := ws.wsConnToUser[conn]; okg { for k, v := range oldStringMap { platform = k @@ -384,19 +383,16 @@ func (ws *WServer) delUserConn(conn *UserConn) { log.Debug(operationID, "WS delete operation", "", "wsUser deleted", ws.wsUserToConn, "disconnection_uid", uid, "disconnection_platform", platform, "online_user_num", len(ws.wsUserToConn)) } delete(ws.wsConnToUser, conn) - } err := conn.Close() if err != nil { log.Error(operationID, " close err", "", "uid", uid, "platform", platform) } - if okg { - callbackResp := callbackUserOffline(operationID, uid, platform) - if callbackResp.ErrCode != 0 { - log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp) - } - promePkg.PromeGaugeDec(promePkg.OnlineUserGauge) + callbackResp := callbackUserOffline(operationID, conn.userID, platform) + if callbackResp.ErrCode != 0 { + log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp) } + promePkg.PromeGaugeDec(promePkg.OnlineUserGauge) }