尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

websocket开启多个页面访问同一个连接会失效的问题解决方法

websocket开启多个页面访问同一个连接会失效的问题解决方法 websocket开启多个页面访问同一个连接会失效的问题解决方法对于该问题的解决方案我们提供两种我们选择第二种第一种在网页中使用iform标签将需要连接的页面在同一个界面处理。第二种:直接在后端处理session因为每次打开页面都需要重新连接那么我们在后端就处理每次的连接请求每次有新的连接接入就从新加入这样在每个页面都能接收到消息啦。/** * 建立连接后,把登录用户的id * 写入WebSocketSession */ Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { Integer uid Integer.parseInt(session.getAttributes().get(uid).toString()); log.info(----------------------------------uid号用户开始上线中----------------------------------); if ( (USER_SOCKET_SESSION_MAP.get(uid) null) || (USER_SOCKET_SESSION_MAP.get(uid)!null !session.equals(USER_SOCKET_SESSION_MAP.get(uid)))) { log.info(--------------------------------用户连接开始---------------------------); handlerConnection(uid,session); } } /** * 处理连接 * param uid * param session */ private void handlerConnection(Integer uid, WebSocketSession session) { //将数据存入map中 USER_SOCKET_SESSION_MAP.put(uid, session); //设置用户的未读消息数量 Integer selectUsMsgCount userMsgService.selectUsMsgCount(uid, null); UserMsg msg new UserMsg(); msg.setMsgType(0);//0表示上线消息未读消息查询 msg.setTitle(查询未读消息); msg.setIsRead(false); msg.setUserId(0); msg.setReceiveUserId(uid); msg.setMsgBody(selectUsMsgCount); //session.sendMessage(new TextMessage(count )); try { sendMessageToUser(uid,new TextMessage(JsonUtils.conveDataToJson(msg))); } catch (IOException e) { e.printStackTrace(); log.info(未读消息读取失败!); } USER_MESSAGE_COUNT_MAP.put(uid,selectUsMsgCount); }
返回列表