From 6ae71dba4fc6ee38f86cc9f2583476525d05e2b7 Mon Sep 17 00:00:00 2001
From: skiffer-git <44203734@qq.com>
Date: Fri, 10 Jun 2022 22:54:15 +0800
Subject: [PATCH] add send msg timeout

---
 internal/msg_gateway/gate/ws_server.go | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/internal/msg_gateway/gate/ws_server.go b/internal/msg_gateway/gate/ws_server.go
index 360b82926..5e69aa06c 100644
--- a/internal/msg_gateway/gate/ws_server.go
+++ b/internal/msg_gateway/gate/ws_server.go
@@ -88,12 +88,18 @@ func (ws *WServer) readMsg(conn *UserConn) {
 	}
 
 }
+
+func (ws *WServer) SetWriteTimeout(conn *UserConn, timeout int) {
+	conn.SetWriteDeadline(time.Now().Add(time.Duration(timeout) * time.Second))
+}
+
 func (ws *WServer) writeMsg(conn *UserConn, a int, msg []byte) error {
 	conn.w.Lock()
 	defer conn.w.Unlock()
+	ws.SetWriteTimeout(conn, 5)
 	return conn.WriteMessage(a, msg)
-
 }
+
 func (ws *WServer) MultiTerminalLoginChecker(uid string, platformID int32, newConn *UserConn, token string, operationID string) {
 	switch config.Config.MultiLoginPolicy {
 	case constant.AllLoginButSameTermKick:
@@ -101,6 +107,7 @@ func (ws *WServer) MultiTerminalLoginChecker(uid string, platformID int32, newCo
 			if oldConn, ok := oldConnMap[constant.PlatformIDToName(platformID)]; ok {
 				log.NewDebug(operationID, uid, platformID, "kick old conn")
 				ws.sendKickMsg(oldConn, newConn)
+				log.NewDebug(operationID, uid, platformID, "kick old conn")
 				m, err := db.DB.GetTokenMapByUidPid(uid, constant.PlatformIDToName(platformID))
 				if err != nil && err != redis.ErrNil {
 					log.NewError(operationID, "get token from redis err", err.Error())