diff --git a/README.md b/README.md index ea4a3e2bdd2ce8b401cf9ba6827c528dd938ce4f..26062e38796bb2561e21497ee70e6ce88fe6e1e4 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ smart-servlet 在 smart-http 的架构之上,通过继承 HttpHandle 实现了 org.smartboot.servlet smart-servlet-maven-plugin - 0.1.9-SNAPSHOT + 0.2 8080 @@ -67,12 +67,12 @@ smart-servlet 在 smart-http 的架构之上,通过继承 HttpHandle 实现了 org.smartboot.servlet plugin-session - 0.1.9-SNAPSHOT + 0.2 org.smartboot.servlet plugin-dispatcher - 0.1.9-SNAPSHOT + 0.2 @@ -102,7 +102,7 @@ smart-servlet 在 smart-http 的架构之上,通过继承 HttpHandle 实现了 org.smartboot.servlet smart-servlet-spring-boot-starter - 0.1.9-SNAPSHOT + 0.2 diff --git a/pom.xml b/pom.xml index fa65d4e017885e7e9a7780dfef2c05d683024fef..ede6181c3d623c568931577d46db15d439f06a67 100644 --- a/pom.xml +++ b/pom.xml @@ -5,12 +5,12 @@ 4.0.0 org.smartboot.servlet smart-servlet-parent - 0.1.9-SNAPSHOT + 0.2 pom - 1.1.20-SNAPSHOT - 0.1.9-SNAPSHOT + 1.1.22 + 0.2 3.1.0 1.3.2 diff --git a/servlet-core/pom.xml b/servlet-core/pom.xml index 08c676a808ee98f41634d9b21f0203bd473f737e..f39a12e2466dfad0b590e6c78b6e28672f066025 100644 --- a/servlet-core/pom.xml +++ b/servlet-core/pom.xml @@ -5,7 +5,7 @@ smart-servlet-parent org.smartboot.servlet - 0.1.9-SNAPSHOT + 0.2 servlet-core 4.0.0 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java b/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java index e5b4e54ee47c8a2f06c84c89a547fff5e871405a..cd552332451f70602f0f134a9547ee312910053e 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java @@ -62,7 +62,7 @@ public class ContainerRuntime { * Font Name: Puffy */ private static final String BANNER = " _ _ _ \n" + " ( )_ (_ ) ( )_ \n" + " ___ ___ ___ _ _ _ __ | ,_) ___ __ _ __ _ _ | | __ | ,_)\n" + "/',__)/' _ ` _ `\\ /'_` )( '__)| | /',__) /'__`\\( '__)( ) ( ) | | /'__`\\| | \n" + "\\__, \\| ( ) ( ) |( (_| || | | |_ \\__, \\( ___/| | | \\_/ | | | ( ___/| |_ \n" + "(____/(_) (_) (_)`\\__,_)(_) `\\__) (____/`\\____)(_) `\\___/'(___)`\\____)`\\__)"; - public static final String VERSION = "0.1.9-SNAPSHOT"; + public static final String VERSION = "0.2"; /** * 注册在当前 Servlet 容器中的运行环境 */ diff --git a/servlet-core/src/main/java/org/smartboot/servlet/plugins/websocket/WebsocketProviderImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/plugins/websocket/WebsocketProviderImpl.java index 7bcd3ce14b36ffc7e339243a0ab3f8c29ba339f3..8262dd4651545223fb5762f107b4d33c17e1d520 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/plugins/websocket/WebsocketProviderImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/plugins/websocket/WebsocketProviderImpl.java @@ -21,6 +21,8 @@ import org.smartboot.servlet.plugins.websocket.impl.SmartServerEndpointConfig; import org.smartboot.servlet.plugins.websocket.impl.WebsocketServerContainer; import org.smartboot.servlet.plugins.websocket.impl.WebsocketSession; import org.smartboot.servlet.provider.WebsocketProvider; +import org.smartboot.socket.util.AttachKey; +import org.smartboot.socket.util.Attachment; import javax.websocket.PongMessage; import javax.websocket.Session; @@ -39,6 +41,8 @@ import java.util.Map; * @version V1.0 , 2021/3/31 */ public class WebsocketProviderImpl implements WebsocketProvider { + + private static final AttachKey WEBSOCKET_SESSION_ATTACH_KEY = AttachKey.valueOf("websocketSession"); private final WebsocketServerContainer container; public WebsocketProviderImpl(WebsocketServerContainer container) { @@ -48,7 +52,8 @@ public class WebsocketProviderImpl implements WebsocketProvider { @Override public void doHandle(ServletContextRuntime runtime, WebSocketRequest request, WebSocketResponse response) { try { - WebsocketSession session = request.getAttachment(); + Attachment attachment = request.getAttachment(); + WebsocketSession session = attachment.get(WEBSOCKET_SESSION_ATTACH_KEY); switch (request.getFrameOpcode()) { case WebSocketRequestImpl.OPCODE_TEXT: handleTextMessage(session.getTextMessageHandler(), new String(request.getPayload(), StandardCharsets.UTF_8)); @@ -117,8 +122,13 @@ public class WebsocketProviderImpl implements WebsocketProvider { } AnnotatedEndpoint endpoint = new AnnotatedEndpoint(matchedServerEndpointConfig, data); + Attachment attachment = request.getAttachment(); + if (attachment == null) { + attachment = new Attachment(); + request.setAttachment(attachment); + } WebsocketSession websocketSession = new WebsocketSession(container, endpoint, URI.create(request.getRequestURI())); - request.setAttachment(websocketSession); + attachment.put(WEBSOCKET_SESSION_ATTACH_KEY, websocketSession); //注册 OnMessage 回调 Map finalData = data; diff --git a/smart-servlet-maven-plugin/pom.xml b/smart-servlet-maven-plugin/pom.xml index ad0e3304a4d8fd4de1767b4ef19828c528ac4752..7dfa6f553a21a36ccf312b7e3a11f3e47168826b 100644 --- a/smart-servlet-maven-plugin/pom.xml +++ b/smart-servlet-maven-plugin/pom.xml @@ -5,7 +5,7 @@ smart-servlet-parent org.smartboot.servlet - 0.1.9-SNAPSHOT + 0.2 4.0.0 maven-plugin diff --git a/spring-boot-starter/pom.xml b/spring-boot-starter/pom.xml index c76f3800dcc9cc060da477c6649399fa04e0c28e..88fc921b0bf69f204058528b592b1fe93f6ce64c 100644 --- a/spring-boot-starter/pom.xml +++ b/spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ smart-servlet-parent org.smartboot.servlet - 0.1.9-SNAPSHOT + 0.2 4.0.0 diff --git a/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartServletServer.java b/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartServletServer.java index fb697a0fa62307008906f7a065cc798ddb6c6143..90820e2085e4de92564a15a78ffca04dfb90818e 100644 --- a/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartServletServer.java +++ b/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartServletServer.java @@ -16,14 +16,13 @@ import org.smartboot.http.server.HttpServerHandler; import org.smartboot.http.server.WebSocketHandler; import org.smartboot.http.server.WebSocketRequest; import org.smartboot.http.server.WebSocketResponse; -import org.smartboot.http.server.impl.Request; +import org.smartboot.http.server.impl.WebSocketRequestImpl; +import org.smartboot.http.server.impl.WebSocketResponseImpl; import org.smartboot.servlet.ContainerRuntime; import org.smartboot.servlet.ServletContextRuntime; import org.springframework.boot.web.server.WebServer; import org.springframework.boot.web.server.WebServerException; -import java.io.IOException; - /** * @author 三刀 * @version V1.0 , 2020/10/12 @@ -48,9 +47,8 @@ public class SmartServletServer implements WebServer { } }).webSocketHandler(new WebSocketHandler() { @Override - public void onHeaderComplete(Request request) throws IOException { - super.onHeaderComplete(request); - containerRuntime.onHeaderComplete(request); + public void whenHeaderComplete(WebSocketRequestImpl request, WebSocketResponseImpl response) { + containerRuntime.onHeaderComplete(request.getRequest()); } @Override diff --git a/testsuite/pom.xml b/testsuite/pom.xml index 77f78ef8bbe6069bee19f2d7ad429baf95f11319..0ba0ed75fd042a30c31fea3afb4de25b8b2ff509 100644 --- a/testsuite/pom.xml +++ b/testsuite/pom.xml @@ -73,7 +73,7 @@ org.smartboot.servlet smart-servlet-maven-plugin - 0.1.9-SNAPSHOT + 0.2 8081 /demo