当前位置: 首页 > news >正文

游戏网站html模板安全的网站建设

游戏网站html模板,安全的网站建设,网站域名在哪备案,江宁区住房和城乡建设局网站Springboot websocket前端无法访问到,Websocket因AOP代理 前端无法请求到 问题出现 在我后端springboot启动后,前端无法请求websocket请求连接到我们websocket服务器。 想要的效果 在我后端springboot启动后,前端可以请求到我们websocket…

Springboot websocket前端无法访问到,Websocket因AOP代理 前端无法请求到

问题出现

在我后端springboot启动后,前端无法请求websocket请求连接到我们websocket服务器。

想要的效果

在我后端springboot启动后,前端可以请求到我们websocket服务器,并且进行交互。

问题排查

出现的问题A

出现问题的代码:

package com.gsxy.core.config;import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {@Overridepublic void configureMessageBroker(MessageBrokerRegistry config){config.enableSimpleBroker("/topic");config.setApplicationDestinationPrefixes("/app");}@Overridepublic void registerStompEndpoints(StompEndpointRegistry registry){registry.addEndpoint("/ws").withSockJS();}}

问题出在没有告诉spring遇见wensocket协议该如何处理。

改正后的代码:

package com.gsxy.core.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;@Configuration
@EnableWebSocket
public class WebSocketConfig  {@Beanpublic ServerEndpointExporter serverEndpointExporter() {return new ServerEndpointExporter();}}

出现的的问题B

问题出在Websocket在controller包下,在我们aop SystemAopImpl,对我们的contorller包下进行了所有代码增强。

/*** @author zhuxinyu 2023-10-23*/
@Component
@Aspect
public class SystemAopImpl implements SystemAop {/*** @author zhuxinyu 2023-10-23* 清理ThreadLocal 防止内存泄漏* @param joinpoint* @throws Exception*/@Override@After("execution(* com.gsxy.core.controller.*.*(..))")public void removeAllThreadLocal(JoinPoint joinpoint) throws Exception {ThreadLocalUtil.mapThreadLocalOfJWT.remove();ThreadLocalUtil.mapThreadLocal.remove();ThreadLocalUtil.DataOfThreadLocal.remove();}}

​ 因为在Spring AOP中使用的是IOC 和 AOP动态代理创建对象,在WebSocket中,如果代理类被代理了,可能会出现问题因为WebSocket容器会查找类上的注解,但是无法找到代理类上,因为@ServerEndpoint来自Java标准注解,并不是AOP,如果我们使用的是cglib动态代理技术,执行的是目标类的子类,这个字类包含我们的拦截逻辑和目标方法的引用,所以无法读取到websocket的注解,导致无法访问websocket,因为我们的websocket没有实现接口,默认实现的cglib动态代理技术,所以触犯了这个问题。jdk动态代理,他执行的是代理对象,这个代理类是包含了我们的环绕逻辑和我们目标类的代理对象,所以不会导致注解失效。

总结

使用websocket不能被cglib所代理。

必须告诉spring遇见websocket如何解决

http://www.yayakq.cn/news/777357/

相关文章:

  • 我想做网站服务器选用什么创网易邮箱账号
  • 做健康类网站怎么备案wordpress 百度熊掌号
  • 做网站分为哪些功能的网站做网站第一步要学什么
  • 免费做logo设计的网站宁波网络推广有哪些
  • 响应式网站demowordpress 彩色源码
  • 做精神科医院网站费用使用亚马逊云做网站
  • mini主机做网站服务器品牌设计需要做些什么
  • 网络推广网站套餐传奇类网页游戏大全
  • 深圳网站设计营销型concrete5 wordpress
  • 电子商务网站建设与管理读书心得萍乡做网站的公司
  • 从哪里找网站家具设计网站大全
  • 个人站长做什么网站好长沙微信乘车码在哪里
  • 吉林网站建设企业安徽省建设工程信息网招标公告
  • wordpress导航设置企业网站优化是什么
  • 一个小型网站开发成本网站开发对企业的关键
  • 花80亿美元建空间站南京口碑最好的装修公司
  • php cms网站建设it运维工程师
  • shopex 网站搬家北京的建筑设计公司
  • 招聘网站开发的公司河南国基建设集团--官方网站
  • 网站源码设计用什么网站推广
  • 怎么做360网站排名潍坊高级网站建设价格
  • 做a的网站有哪些门户网站的大数据应用
  • 做调查的网站知乎青岛网站建设开发外包
  • 多个网站 备案吗住房建设和城乡管理局官网
  • 哪些做图片赚钱的网站萧山网站建设xsszwl
  • html5 公司网站app一键生成平台免费软件
  • 太原网站建站模板哪个网站做中高端衣服
  • 网站优化成功案例创建个人网站怎么做
  • 域名买完后如何做网站wordpress动画效果
  • 网站集约化后如何建设wordpress小程序怎么不用认证审核