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

当多个页面尝试访问同一WebSocket连接时会导致失效。本文提出两种解决策略:一是利用iframe在同一界面处理;二是通过后端处理session,确保每个页面都能接收消息。
摘要由CSDN通过智能技术生成

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);
		}
	}

	/**
	 * 处理连
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值