优化会话,当对删除的会话发送信息时返回error
This commit is contained in:
@@ -64,18 +64,24 @@ public class ChatWebSocketHandler extends TextWebSocketHandler {
|
||||
|
||||
// 处理私聊消息
|
||||
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. 消息入库 + 会话更新
|
||||
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. 推送给接收方
|
||||
WebSocketSession receiverSession =
|
||||
sessionManager.getSession(dto.getReceiverUserId());
|
||||
|
||||
@@ -52,7 +52,8 @@ public class ChatServiceImpl implements ChatService {
|
||||
|
||||
ChatSessions session = chatSessionsMapper.getSession(senderUserId, dto.getReceiverUserId());
|
||||
if (session != null && session.getSessionStatus() == 3) {
|
||||
throw new RuntimeException("会话已删除,无法发送消息");
|
||||
log.warn("会话已删除,无法发送消息");
|
||||
return null;
|
||||
}
|
||||
|
||||
ChatRecords record = new ChatRecords();
|
||||
|
||||
Reference in New Issue
Block a user