优化会话,当对删除的会话发送信息时返回error

This commit is contained in:
KilLze
2026-01-07 03:43:33 +08:00
parent b6953cb8d0
commit 21c0a94a5d
2 changed files with 11 additions and 4 deletions

View File

@@ -64,18 +64,24 @@ public class ChatWebSocketHandler extends TextWebSocketHandler {
// 处理私聊消息 // 处理私聊消息
if ("chat".equals(wsMessage.getType())) { if ("chat".equals(wsMessage.getType())) {
handlePrivateChat(senderUserId, wsMessage.getData()); handlePrivateChat(session, senderUserId, wsMessage.getData());
} }
} }
/** /**
* 私聊处理 * 私聊处理
*/ */
private void handlePrivateChat(Long senderUserId, ChatRecordSendDTO dto) throws Exception { private void handlePrivateChat(WebSocketSession session, Long senderUserId, ChatRecordSendDTO dto) throws Exception {
// 1. 消息入库 + 会话更新 // 1. 消息入库 + 会话更新
ChatRecordsVO chatRecordsVO = chatService.createSession(senderUserId, dto); ChatRecordsVO chatRecordsVO = chatService.createSession(senderUserId, dto);
if (chatRecordsVO == null){
WsMessage<String> errorMsg = new WsMessage<>();
errorMsg.setType("error");
errorMsg.setData("会话已删除,无法发送消息");
session.sendMessage(new TextMessage(objectMapper.writeValueAsString(errorMsg)));
return;
}
// 2. 推送给接收方 // 2. 推送给接收方
WebSocketSession receiverSession = WebSocketSession receiverSession =
sessionManager.getSession(dto.getReceiverUserId()); sessionManager.getSession(dto.getReceiverUserId());

View File

@@ -52,7 +52,8 @@ public class ChatServiceImpl implements ChatService {
ChatSessions session = chatSessionsMapper.getSession(senderUserId, dto.getReceiverUserId()); ChatSessions session = chatSessionsMapper.getSession(senderUserId, dto.getReceiverUserId());
if (session != null && session.getSessionStatus() == 3) { if (session != null && session.getSessionStatus() == 3) {
throw new RuntimeException("会话已删除,无法发送消息"); log.warn("会话已删除,无法发送消息");
return null;
} }
ChatRecords record = new ChatRecords(); ChatRecords record = new ChatRecords();