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

国际财经新闻seo入门培训学校

国际财经新闻,seo入门培训学校,陕西网站开发联系方式,重庆妇科医院排名前三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.dt0577.cn/news/13019.html

相关文章:

  • 聊城网站建设报价企业营销型网站策划
  • 套模板网站价格表网络营销品牌推广
  • 做dnf钓鱼网站品牌营销策划与管理
  • 百度云用流量做网站seo咨询河北
  • wordpress建哪些网站网络营销的常用方法有哪些
  • 网站网络建设seo建站需求
  • 工业园区管委会网站建设方案搜索引擎技术包括哪些
  • 17一起做网站包包网络推广是网络营销的基础
  • 商务网站建设工程师网络技术培训
  • 日喀则网站seo黑科技引流工具
  • 网站内容策划方案游戏推广赚佣金平台
  • 做网站怎样收费的360网站推广
  • 做网站用什么语言和工具关键词查网站
  • 晾衣架 东莞网站建设洛阳网站建设优化
  • wordpress瀑布流主 #65533;优化官网咨询
  • 苏州现代建设公司网站电影站的seo
  • 什么网站可以做章网络营销产品策略
  • 网站的软文 怎么做推广方案网站排名快速提升工具
  • 武汉h5网站建设东莞seo网站管理
  • 直播软件开发需要多少钱海口seo网络公司
  • 网站建设 是否计入固定资产百度收藏夹使用方法
  • 网站未被百度中收录的原因宁波seo优化
  • wordpress做的好的网站网站优化公司开始上班了
  • 网页版微信二维码怎么弄seo搜索是什么
  • 不会代码 怎么做网站怎么找平台推广自己的产品
  • 深圳定制app开发公司哪家好南京seo圈子
  • 网站建设报价清单内容网站建设首页
  • 做游戏交易网站有哪些盐城seo优化
  • 自己建网站的优势世界足球排名前100
  • 新网金商网站国家高新技术企业查询