Browse Source

修改会话逻辑

kobe6258 1 day ago
parent
commit
cd48c51262
2 changed files with 6 additions and 4 deletions
  1. 0 1
      utils/ws/session.go
  2. 6 3
      utils/ws/session_manager.go

+ 0 - 1
utils/ws/session.go

@@ -52,7 +52,6 @@ func (s *Session) readPump() {
 		if err = manager.HandleMessage(s.UserId, s.Id, message); err != nil {
 			//写应答
 			_ = s.writeWithTimeout(err.Error())
-
 		}
 	}
 }

+ 6 - 3
utils/ws/session_manager.go

@@ -56,9 +56,7 @@ func Manager() *ConnectionManager {
 
 // HandleMessage 消息处理核心逻辑
 func (manager *ConnectionManager) HandleMessage(userID int, sessionID string, message []byte) error {
-	if !Allow(userID, QA_LIMITER) {
-		return errors.New("您提问的太频繁了,请稍后再试")
-	}
+
 	session, exists := manager.GetSession(sessionID)
 	if !exists {
 		return errors.New("session not found")
@@ -68,6 +66,11 @@ func (manager *ConnectionManager) HandleMessage(userID int, sessionID string, me
 		fmt.Printf("收到心跳消息,续期长连接:%v", session.LastActive)
 		return nil
 	}
+	if !Allow(userID, QA_LIMITER) {
+		_ = session.Conn.WriteMessage(websocket.TextMessage, []byte("您提问的太频繁了,请稍后再试"))
+		_ = session.Conn.WriteMessage(websocket.TextMessage, []byte("<EOF/>"))
+		return nil
+	}
 	var userMessage Message
 	err := json.Unmarshal(message, &userMessage)
 	if err != nil {