|
@@ -3,12 +3,15 @@ package ws
|
|
|
import (
|
|
|
"encoding/json"
|
|
|
"errors"
|
|
|
+ chatService "eta/eta_api/services/llm"
|
|
|
"eta/eta_api/utils"
|
|
|
"eta/eta_api/utils/llm"
|
|
|
"eta/eta_api/utils/llm/eta_llm"
|
|
|
+ "eta/eta_api/utils/llm/eta_llm/eta_llm_http"
|
|
|
"fmt"
|
|
|
"github.com/gorilla/websocket"
|
|
|
"net/http"
|
|
|
+ "strings"
|
|
|
"sync"
|
|
|
"time"
|
|
|
)
|
|
@@ -60,6 +63,11 @@ func (manager *ConnectionManager) HandleMessage(userID int, sessionID string, me
|
|
|
if !exists {
|
|
|
return errors.New("session not found")
|
|
|
}
|
|
|
+ if strings.ToLower(string(message)) == "pong" {
|
|
|
+ session.UpdateActivity()
|
|
|
+ fmt.Printf("收到心跳消息,续期长连接:%v", session.LastActive)
|
|
|
+ return nil
|
|
|
+ }
|
|
|
var userMessage Message
|
|
|
err := json.Unmarshal(message, &userMessage)
|
|
|
if err != nil {
|
|
@@ -67,8 +75,22 @@ func (manager *ConnectionManager) HandleMessage(userID int, sessionID string, me
|
|
|
return errors.New("消息格式错误:" + err.Error())
|
|
|
}
|
|
|
// 处理业务逻辑
|
|
|
- session.History = append(session.History, userMessage.LastTopics...)
|
|
|
-
|
|
|
+ //session.History = append(session.History, userMessage.LastTopics...)
|
|
|
+ redisHisChat, err := chatService.GetChatRecordsFromRedis(userMessage.ChatId)
|
|
|
+ if err != nil {
|
|
|
+ utils.FileLog.Error("获取历史对话数据失败,err:", err.Error())
|
|
|
+ } else {
|
|
|
+ for _, chat := range redisHisChat {
|
|
|
+ his := eta_llm_http.HistoryContent{
|
|
|
+ Content: chat.Content,
|
|
|
+ Role: chat.ChatUserType,
|
|
|
+ }
|
|
|
+ hisMsg, _ := json.Marshal(&his)
|
|
|
+ if len(hisMsg) != 0 {
|
|
|
+ session.History = append(session.History, hisMsg)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
resp, err := llmService.KnowledgeBaseChat(userMessage.Query, userMessage.KbName, session.History)
|
|
|
defer func() {
|
|
|
if resp != nil && resp.Body != nil && err == nil {
|