范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

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

看得见声音的音响,这款蓝牙音响值得一试三连一下,了解更多精彩内容忙碌了一天之后,你最想的是不是美美地睡一觉,还是说找上三五好友,一起把酒言欢?相信每个人都有自己独特的解压,释放的方法。由于出门在外好友很难相聚一起,最让iPhoneSE3强势归来,刘海全面屏加持,网友iPhone8回来了?如今苹果秋季发布会已经结束,iPhone13系列也如期归来,按照正常的发布节奏,在年底之前,将不会再有任何iPhone出现。对其它手机厂商一样,主要的任务依然是如何提升销量。对于苹直播电商产业行稳走远之道近几年,随着互联网的飞速发展,网购已成为了我们生活中十分常见的一种购物方式。与此同时,带货主播这一职业也应运而生,为喜爱网购的网民们提供了更多的便利。尽管偶尔我也网购,但对直播商品球形轮胎开始应用了雪铁龙用四个球造了一辆滑板汽车近日,法国汽车制造商雪铁龙也提前答完交卷了结合了高科技通用出行的需求,研发了一款可自动驾驶的电动滑板平台CitroenSkate它长2。60米,宽1。60米高为0。51米,且扁平式中国人工智能专利快速增长如今,中国人工智能发展已经处于世界领先地位,并在专利申请量和授权量上超过美国。以百度为代表的企业,正逐渐成为中国人工智能持续创新发展和技术应用落地的主体。近日,国家工业信息安全发展如何快速建立一个网站?要建立网站需要以下几个步骤域名首先你要拥有一个域名,这个就跟你的门牌号一样,这个你可以在阿里云腾讯云等网站上注册,根据你的域名的好坏和后缀名,收费不同,最低的只要几块钱,高的没有上将永远统治世界的6种技术趋势新冠疫情彻底改变了我们的生活。创新过程的加速超出了我们的想象。未来的每一天都会带来一项新的创新技术,显示出改变我们生活进程的潜力。疫情通过改变技术趋势创新和整个技术生态系统,重塑了魔珐科技打造虚拟世界的基础设施,让创作虚拟内容更加简单虚拟世界是现实世界的镜像,而虚拟人是虚拟世界的核心资产。2021年,虚拟人产业进入了高速增长时期,虚拟数字人产品在娱乐影视制作游戏制作品牌代言和直播电商等各个领域都有了成熟的商业化苹果推出重新设计的AppleID网站更简洁实用财经网科技11月5日讯,据IT之家消息,苹果重新设计了其AppleID网站,引入了全新的外观,和之前的设计风格相比,更具有现代感更简洁。该AppleID登陆页面更换一个新的圆点和苹远超对手,比强更强!全核心5。2GHz十二代酷睿DDR56200首测通过采用大小核设计两套全新的处理器架构,英特尔第十二代酷睿处理器获得了质的飞跃,如当年从奔腾四进化到扣肉时代那样,处理器的各方面性能都有大幅提升。不过要想发挥出十二代酷睿处理器的性曝A16仿生处理器iPhone14Pro,iPhone13沦为牺牲品,跌至大米价iPhone14Pro这款旗舰新机在机身方面的参数配置也十分优秀,iPhone14Pro这款旗舰新机处理器将会升级A16仿生处理器,iPhone14Pro这款旗舰新机软件方面也会升
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。POCOM452022年换手机首选这3款,系统速度快价格很良心,能再用三四年现在的智能手机越做越好,各家手机厂商每年都会推出很多各式各样的手机,手机的品质也不像以前那样差,用上一年多就卡顿得不行,可以说,如今的智能手机已经完成了蜕变,不仅产品质量提升很大,小米12Pro的DXO成绩出炉131分,位列第14名近日,DXOMARK官方发布的数据显示,小米12Pro的拍照评分已出炉,小米12Pro在DxoMark的综合评分测试中获得了131分,排名第14名,与VivoX50Pro排名相同。日立新UX单元机好处在哪里呢?伴随人民生活质量的提升,空调逐渐适用于家庭以及办公的出现,同时产品多样化,那选择空调使用成为了我们眼花缭乱的现象,那么如何针对自己家的户型选择一款称心如意的产品成为关键。那今天还是初识Java(十三)面向对象之Java方法5。2Java中的方法方法是类或者对象的行为特征抽象,方法是类或者对象最重要的组成部分。Java中的方法不能独立存在,所有的方法要么属于类,要么属于对象。5。2。1方法的所属性在J