提交 c1a33cf4 authored 作者: 吕本才's avatar 吕本才

fix(websocket): 处理消息格式异常和发送异常

上级 73825b3b
package com.wangxiaolu.promotion.websocket;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.wangxiaolu.promotion.websocket.pojo.MessageBean;
import lombok.extern.slf4j.Slf4j;
......@@ -55,7 +56,7 @@ public class TemporaryActivityTaskClockSocketHandler extends TextWebSocketHandle
* 收到前端消息时调用
*/
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
protected void handleTextMessage(WebSocketSession session, TextMessage message) {
String userId = (String) session.getAttributes().get("userId");
String payload = message.getPayload();
log.info("收到用户[" + userId + "]的消息:" + payload);
......@@ -65,9 +66,20 @@ public class TemporaryActivityTaskClockSocketHandler extends TextWebSocketHandle
log.info("用户[" + userId + "]心跳正常");
return;
}
// 业务处理
MessageBean messageBean = objectMapper.readValue(payload, MessageBean.class);
handleMessageType(messageBean);
// 判断payload 是否是json
if (payload.startsWith("{")) {
MessageBean messageBean = null;
try {
messageBean = objectMapper.readValue(payload, MessageBean.class);
} catch (JsonProcessingException e) {
log.error("用户[" + userId + "]消息格式错误:" + payload);
sendToUser(userId, "用户[" + userId + "]消息格式错误:" );
}
handleMessageType(messageBean);
}
// 业务消息处理(示例:广播消息)
// broadcast("用户[" + userId + "]:" + payload);
}
......@@ -130,11 +142,15 @@ public class TemporaryActivityTaskClockSocketHandler extends TextWebSocketHandle
/**
* 向指定用户发送消息
*/
public Integer sendToUser(String userId, String message) throws IOException {
public Integer sendToUser(String userId, String message) {
WebSocketSession session = sessions.get(userId);
if (session != null && session.isOpen()) {
// String jsonMessage = objectMapper.writeValueAsString(message);
session.sendMessage(new TextMessage(message));
try {
session.sendMessage(new TextMessage(message));
} catch (IOException e) {
log.error("用户[" + userId + "]发送消息失败:" + message);
return 0;
}
return 1;
}
return 0;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论