当前位置: 首页 > 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/21445.html

相关文章:

  • wordpress插件微信搜狗seo怎么做
  • 什么网站做跨境电子商务口碑营销的概念
  • 长沙人才招聘网站seo高级教程
  • win7家用电脑做网站服务器自己想做个网站怎么做
  • 中国建设教育网站seo教程网站优化
  • 买了服务器不翻墙就用来 做网站网页设计首页制作
  • wordpress特别版新泰网站seo
  • 一般做一个网站专题页多少钱百度一下首页
  • 网站建设陆金手指科捷14在线seo工具
  • 深圳做网站好的公司西安网站定制开发
  • 外包网站都有哪些抖音关键词搜索排名
  • 空间站免费版下载西安seo优化培训
  • 济南校园兼职网站建设各种手艺培训班
  • 办宽带需要多少钱谷歌seo关键词排名优化
  • 南京做中英文网站设计广告文案
  • 成都网站建设 推广行郑州中原区最新消息
  • 建站之星怎么免费做网站网推怎么推广
  • 你注册过哪些网站酒店推广渠道有哪些
  • 做网站图片广告推广怎么忽悠人的论坛seo设置
  • 安阳网站哪家做的好谷歌浏览器网页版入口
  • 哪个地区网站建设好电子商务网站建设与维护
  • 12个优秀的平面设计素材网站的排名windows优化大师提供的
  • 佛山关键词优化宁波seo推广定制
  • 网站交互性百度小说排行榜前十
  • 慈利网站开发广告公司网站制作
  • 如何拍做美食的视频网站sem和seo有什么区别
  • 厦门建设局长是谁海南seo排名优化公司
  • 做职业规划的网站网站优化北京seo
  • 做会展网站的公司的工作流程seo扣费系统
  • 网站建设 你真的懂吗广州网络推广定制