socket代码异常处理及日志打印

This commit is contained in:
zzc 2024-11-17 21:21:29 +08:00
parent 4a7f767638
commit fc4b5ca1ff
2 changed files with 32 additions and 16 deletions

View File

@ -8,12 +8,8 @@ import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.websocket.constant.WebSocketConstants;
import org.dromara.common.websocket.dto.WebSocketMessageDto; import org.dromara.common.websocket.dto.WebSocketMessageDto;
import org.dromara.common.websocket.handler.PlusWebSocketHandler;
import org.dromara.common.websocket.handler.WebSocketApi; import org.dromara.common.websocket.handler.WebSocketApi;
import org.dromara.common.websocket.holder.WebSocketSessionHolder;
import org.dromara.common.websocket.utils.WebSocketUtils; import org.dromara.common.websocket.utils.WebSocketUtils;
import org.dromara.web.config.LastWebSocketParamDto; import org.dromara.web.config.LastWebSocketParamDto;
import org.dromara.web.controller.app.EqDeviceController; import org.dromara.web.controller.app.EqDeviceController;
@ -23,13 +19,8 @@ import org.dromara.web.domain.vo.EqEquipmentDetailVo;
import org.dromara.web.domain.vo.EqEquipmentVo; import org.dromara.web.domain.vo.EqEquipmentVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit;
import static org.dromara.common.websocket.constant.WebSocketConstants.LOGIN_USER_KEY;
/** /**
* @ClassName : WebSocketHandler * @ClassName : WebSocketHandler
@ -51,6 +42,8 @@ public class WebSocketBusinessHandler implements WebSocketApi {
public void dealWithDetailMsg(LoginUser loginUser, String msg) { public void dealWithDetailMsg(LoginUser loginUser, String msg) {
EqAppHomeBo bo = null; EqAppHomeBo bo = null;
String sendMsg = ""; String sendMsg = "";
R<EqEquipmentDetailVo> deviceMsg = null;
boolean isTrue = true;
try { try {
bo = JSON.parseObject(msg, EqAppHomeBo.class); bo = JSON.parseObject(msg, EqAppHomeBo.class);
LastWebSocketParamDto dto = new LastWebSocketParamDto(); LastWebSocketParamDto dto = new LastWebSocketParamDto();
@ -59,11 +52,21 @@ public class WebSocketBusinessHandler implements WebSocketApi {
RedisUtils.setCacheObject(Constants.WEBSOCKET_METHOD+loginUser.getUserId(),dto); RedisUtils.setCacheObject(Constants.WEBSOCKET_METHOD+loginUser.getUserId(),dto);
} catch (Exception e) { } catch (Exception e) {
log.error("参数错误"); log.error("参数错误");
sendMsg = "参数错误"; isTrue = false;
deviceMsg = R.fail("参数错误:"+e.getMessage());
} }
R<EqEquipmentDetailVo> deviceMsg = controller.getDeviceMsg(bo); if (isTrue){
try {
deviceMsg = controller.getDeviceMsg(bo);
} catch (Exception e) {
deviceMsg = R.fail("设备详情获取失败:"+e.getMessage());
log.error("设备详情获取失败");
}
}
// EqEquipmentDetailVo data = deviceMsg.getData(); // EqEquipmentDetailVo data = deviceMsg.getData();
sendMsg = JSON.toJSONString(deviceMsg); sendMsg = JSON.toJSONString(deviceMsg);
log.info("socket详情发送{}",sendMsg);
sendMsg(sendMsg,loginUser.getUserId()); sendMsg(sendMsg,loginUser.getUserId());
} }
@ -71,6 +74,7 @@ public class WebSocketBusinessHandler implements WebSocketApi {
public void dealWithListMsg(LoginUser loginUser, String msg) { public void dealWithListMsg(LoginUser loginUser, String msg) {
EqAppHomeBo bo = null; EqAppHomeBo bo = null;
String sendMsg = ""; String sendMsg = "";
boolean isTure = true;
try { try {
bo = JSON.parseObject(msg, EqAppHomeBo.class); bo = JSON.parseObject(msg, EqAppHomeBo.class);
LastWebSocketParamDto dto = new LastWebSocketParamDto(); LastWebSocketParamDto dto = new LastWebSocketParamDto();
@ -80,12 +84,23 @@ public class WebSocketBusinessHandler implements WebSocketApi {
} catch (Exception e) { } catch (Exception e) {
log.error("参数错误"); log.error("参数错误");
sendMsg = "参数错误"; sendMsg = "参数错误";
isTure = false;
} }
PageQuery pageQuery = new PageQuery(); TableDataInfo<EqEquipmentVo> list = null;
pageQuery.setPageNum(0); if (isTure){
pageQuery.setPageSize(100); PageQuery pageQuery = new PageQuery();
TableDataInfo<EqEquipmentVo> list = homeController.listForWebSocket(bo, pageQuery,loginUser); pageQuery.setPageNum(0);
sendMsg = JSON.toJSONString(list); pageQuery.setPageSize(100);
try {
list = homeController.listForWebSocket(bo, pageQuery,loginUser);
} catch (Exception e) {
isTure = false;
sendMsg = "获取设备列表失败"+e.getMessage();
log.error("获取设备列表失败:{}",e.getMessage());
}
}
sendMsg = isTure?JSON.toJSONString(list):sendMsg;
log.info("socket列表发送{}",sendMsg);
sendMsg(sendMsg,loginUser.getUserId()); sendMsg(sendMsg,loginUser.getUserId());
} }

View File

@ -54,6 +54,7 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler {
@Override @Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
// 从WebSocket会话中获取登录用户信息 // 从WebSocket会话中获取登录用户信息
log.info("socket接受到消息 {}", message.getPayload());
LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY);
String currentPath = session.getUri().getPath(); String currentPath = session.getUri().getPath();
String lastPath = WebSocketSessionHolder.getSessions(loginUser.getUserId()).getUri().getPath(); String lastPath = WebSocketSessionHolder.getSessions(loginUser.getUserId()).getUri().getPath();