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);
}
}
/**
* 处理连