JeecgBoot关于websocket的改进方案
1.环境描述
JeecgBoot3.0 2.websocket权限认证在shiroConfig.java代码中注释掉 filterChainDefinitionMap.put("/websocket/**", "anon");//系统通知和公告配置拦截器 package org.jeecg.config.websocket; import org.apache.commons.lang.StringUtils; import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpResponse; import org.springframework.http.server.ServletServerHttpRequest; import org.springframework.http.server.ServletServerHttpResponse; import org.springframework.stereotype.Component; import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Map; @Component public class HandshakeInterceptor extends HttpSessionHandshakeInterceptor { @Override public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map attributes) throws Exception { return super.beforeHandshake(request, response, wsHandler, attributes); } @Override public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception ex) { HttpServletRequest httpServletRequest = ((ServletServerHttpRequest)request).getServletRequest(); HttpServletResponse httpServletResponse = ((ServletServerHttpResponse)response).getServletResponse(); if(StringUtils.isNotEmpty(httpServletRequest.getHeader("sec-websocket-protocol"))) httpServletResponse.addHeader("sec-websocket-protocol", httpServletRequest.getHeader("sec-websocket-protocol")); super.afterHandshake(request, response, wsHandler, ex); } }修改前端的请求,在HeaderNotice.vue中 let token = Vue.ls.get(ACCESS_TOKEN) var url = window._CONFIG["domianURL"].replace("https://","wss://").replace("http://","ws://")+"/websocket/"+userId +"?token="+token3. HashMap不是线程安全的,可以改为线程安全的map,如下 private static Map sessionPool = new ConcurrentHashMap<>();4.重复发送问题原有的代码为: /** * 服务器端推送消息 */ public void pushMessage(String message) { try { webSockets.forEach(ws -> ws.session.getAsyncRemote().sendText(message)); } catch (Exception e) { e.printStackTrace(); } } @OnMessage public void onMessage(String message) { //todo 现在有个定时任务刷,应该去掉 log.debug("【websocket消息】收到客户端消息:" + message); JSONObject obj = new JSONObject(); //业务类型 obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_CHECK); //消息内容 obj.put(WebsocketConst.MSG_TXT, "心跳响应"); for (WebSocket webSocket : webSockets) { webSocket.pushMessage(message); } } 可将OnMessage函数改为: @OnMessage public void onMessage(String message) { //todo 现在有个定时任务刷,应该去掉 log.debug("【websocket消息】收到客户端消息:" + message); JSONObject obj = new JSONObject(); //业务类型 obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_CHECK); //消息内容 obj.put(WebsocketConst.MSG_TXT, "心跳响应"); for (WebSocket webSocket : webSockets) { //webSocket.pushMessage(message); webSocket.session.getAsyncRemote().sendText(message); } }
4月,中兴再携屏下摄像头手机王者归来前段时间,我们了解到中兴即将有几款新机型即将入网,其中一款就是小编今天重点说的即将在4月发布的中兴Axon40系列。从外观上来看,中兴Axon40与努比亚Z40Pro有很多相似之处
华为MateX3将于4月底发布,只有4G,支持66W快充早前消息称华为有一款代号为PALAL00的4G新机已经入网,相关消息也有了不少的爆料,今天小编就和大家一起盘点一下这款新机相关配置信息。从入网信息和相关博主的爆料来看,这款入网的新
鸿蒙手机也不保值了,曲面屏66W快充,价格跌破2000元华为Mate40Pro的5G版在上市一年多以后,价格依旧稳定。可以说这两年最保值的机型就是它了。在Mate40Pro发布之后,华为的新机几乎全是4G。但是也无法影响用户的热情,因为
咋样干好汽车销售这个工作?第一你必须热爱汽车汽车感兴趣。会让你更好地了解汽车,对汽车的爱好,这是最重要的先决条件。这也是你的汽车销售行业奠定了基础。第二自信和开朗的性格。作为一个合格的汽车销售顾问的性格是非
华为时代落下帷幕苹果抢占高端市场受阻,新对手小米来了引言对于中国手机企业的发展而言,华为时代的落幕,导致我国高端手机市场发生激烈变动,而美国苹果公司更是迅速抢占先机,并成为中国手机市场领域内的大赢家。尽管在此前的日子里,很多国内手机
移速130w充电宝,笔记本的加油站前言现在的手机为了提高充电的速度,都把充电的功率提高几十瓦甚至一百瓦以上,所以很多充电器的功率都是跟着往上走,然后65W多口充电器成了热门。为了满足移动需求,充电宝也跟了上来。而且
小米PocoM4Pro搭载联发科HelioG96小米此前在印度推出了两款POCO系列新机POCOM4Pro和POCOM4Pro5G。该公司最近似乎正准备再推出一款POCOM4系列的智能手机,命名为POCOM45G。POCOM45
2022年换手机首选这3款,系统速度快价格很良心,能再用三四年现在的智能手机越做越好,各家手机厂商每年都会推出很多各式各样的手机,手机的品质也不像以前那样差,用上一年多就卡顿得不行,可以说,如今的智能手机已经完成了蜕变,不仅产品质量提升很大,
小米12Pro的DXO成绩出炉131分,位列第14名近日,DXOMARK官方发布的数据显示,小米12Pro的拍照评分已出炉,小米12Pro在DxoMark的综合评分测试中获得了131分,排名第14名,与VivoX50Pro排名相同。
日立新UX单元机好处在哪里呢?伴随人民生活质量的提升,空调逐渐适用于家庭以及办公的出现,同时产品多样化,那选择空调使用成为了我们眼花缭乱的现象,那么如何针对自己家的户型选择一款称心如意的产品成为关键。那今天还是
初识Java(十三)面向对象之Java方法5。2Java中的方法方法是类或者对象的行为特征抽象,方法是类或者对象最重要的组成部分。Java中的方法不能独立存在,所有的方法要么属于类,要么属于对象。5。2。1方法的所属性在J