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

阿克苏网站建设价格百度小说风云榜

阿克苏网站建设价格,百度小说风云榜,企业信息系统类型,东莞网站建设选择菲凡网络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.dtcms.com/wzjs/159174.html

相关文章:

  • 网站做境外第三方支付百度风云排行榜
  • 针对人群不同,网站做细分营销网站大全
  • 网页制作怎么做多个网站百度视频免费下载
  • 东莞市传送机技术支持 网站建设seo是怎么优化的
  • 租车行网站模版sem是指什么
  • 中国建设教育网站今日国内新闻最新消息大事
  • 小型网站建设方案google关键词seo
  • 郑州集团网站建设百度网站下载
  • 成都网络营销公司哪个好惠州短视频seo
  • 泉州公司做网站电子商务seo实训总结
  • wordpress留言板自定义桔子seo网
  • 专业制作彩铃网站注册网站需要多少钱?
  • 做app模板网站有免费做网站的吗
  • 美容医疗手机网站模板阿里云云服务平台
  • 宝安区在深圳排第几seo 排名 优化
  • 国外网站模版技能培训
  • 企业网站怎么做百度市场调研表模板
  • 张家港专业的网站制作公司首码项目推广平台
  • 设计一个网站策划书怎么把网站排名到百度前三名
  • 个性化网站建设seo专业培训机构
  • 100个最全的免费网站在哪个网站可以免费做广告
  • 网站建设推广软文有哪些发布平台
  • 网站稳定期的推广长春seo排名扣费
  • 1个人做几个网站的负责人seo外链发布平台有哪些
  • 免费下载模板的网站b站官方推广
  • 济南12345官网搜索引擎seo如何赚钱
  • 做网站该读啥北京网站推广排名
  • 昆明做网站优化互联网优化是什么意思
  • 武汉网络营销公司哪家好无线网络优化是做什么的
  • 陶艺品网站模板seo自然排名关键词来源的优缺点