From 17a52ed471d8724eec21e42d24eab5c5a52e3c05 Mon Sep 17 00:00:00 2001 From: ivmiku <124345843+ivmiku@users.noreply.github.com> Date: Sat, 14 Sep 2024 18:06:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BE=9D=E8=B5=96=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tutorial/config/WebSocketConfig.java | 34 +++++++++++++++++++ .../tutorial/controller/WebSocketServer.java | 11 ++++-- .../tutorial/config/SaTokenConfigure.java | 3 +- 3 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 community-8073/src/main/java/com/ivmiku/tutorial/config/WebSocketConfig.java diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/config/WebSocketConfig.java b/community-8073/src/main/java/com/ivmiku/tutorial/config/WebSocketConfig.java new file mode 100644 index 0000000..b36ddc7 --- /dev/null +++ b/community-8073/src/main/java/com/ivmiku/tutorial/config/WebSocketConfig.java @@ -0,0 +1,34 @@ +package com.ivmiku.tutorial.config; + +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletException; +import org.springframework.boot.web.servlet.ServletContextInitializer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.server.standard.ServerEndpointExporter; +import org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean; +import org.springframework.web.util.WebAppRootListener; + +@Configuration +public class WebSocketConfig implements ServletContextInitializer { + @Bean + public ServerEndpointExporter serverEndpointExporter (){ + return new ServerEndpointExporter(); + } + + @Override + public void onStartup(ServletContext servletContext) throws ServletException { + servletContext.addListener(WebAppRootListener.class); + servletContext.setInitParameter("org.apache.tomcat.websocket.textBufferSize","102400000"); + } + + @Bean + public ServletServerContainerFactoryBean createWebSocketContainer() { + ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean(); + // 在此处设置bufferSize + container.setMaxTextMessageBufferSize(50*1024*1024); + container.setMaxBinaryMessageBufferSize(50*1024*1024); + container.setMaxSessionIdleTimeout(15 * 60000L); + return container; + } +} diff --git a/community-8073/src/main/java/com/ivmiku/tutorial/controller/WebSocketServer.java b/community-8073/src/main/java/com/ivmiku/tutorial/controller/WebSocketServer.java index 2e52100..b9cc8d8 100644 --- a/community-8073/src/main/java/com/ivmiku/tutorial/controller/WebSocketServer.java +++ b/community-8073/src/main/java/com/ivmiku/tutorial/controller/WebSocketServer.java @@ -8,7 +8,9 @@ import com.ivmiku.tutorial.service.impl.SearchService; import jakarta.websocket.*; import jakarta.websocket.server.PathParam; import jakarta.websocket.server.ServerEndpoint; +import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Controller; import java.io.IOException; @@ -18,7 +20,7 @@ import java.util.concurrent.ConcurrentHashMap; @Controller @ServerEndpoint(value = "/search/{satoken}") -public class WebSocketServer { +public class WebSocketServer implements ApplicationContextAware { public static Map sessionMap = new ConcurrentHashMap<>(); private static ApplicationContext applicationContext; private SearchService searchService; @@ -61,7 +63,7 @@ public class WebSocketServer { } case '#' -> { String sub = message.substring(1); - List list = searchService.getTag(message); + List list = searchService.getTag(sub); session.getBasicRemote().sendText(JSON.toJSONString(Result.ok(list))); } //预留给社区搜索 @@ -70,4 +72,9 @@ public class WebSocketServer { } } } + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + WebSocketServer.applicationContext = applicationContext; + } } diff --git a/gateway-8133/src/main/java/com/ivmiku/tutorial/config/SaTokenConfigure.java b/gateway-8133/src/main/java/com/ivmiku/tutorial/config/SaTokenConfigure.java index d26eec4..bb730af 100644 --- a/gateway-8133/src/main/java/com/ivmiku/tutorial/config/SaTokenConfigure.java +++ b/gateway-8133/src/main/java/com/ivmiku/tutorial/config/SaTokenConfigure.java @@ -47,7 +47,8 @@ public class SaTokenConfigure { "/user/register", "/swagger-resources/**", "/v3/**", - "/swagger-ui/**") + "/swagger-ui/**", + "/ws/**") // 鉴权方法:每次访问进入 .setAuth(obj -> { // 登录校验 -- 拦截所有路由,并排除指定路由