diff --git a/README.md b/README.md index 980a63af4f08b1f66130509717cd6c1b985dc25d..a2c20648ebb27885cf5fb121fd32b43090b2bb75 100644 --- a/README.md +++ b/README.md @@ -47,8 +47,9 @@ 2. ~~没有顶号的功能,当登录两个同样的A用户,(先登录叫A-1,后登录叫A-2),A-2可以接受消息,A-1、A-2都能发消息。~~ 3. 出现过一次空指针(不影响功能,退出时出现的与io流有关)。 4. 优化重定向,目前是重定向到错误页面。 -5. 刷新导致onclose方法取出user为null,从而无法在拦截器正确移除已退出的用户。(重要) - +5. ~~刷新导致onclose方法取出user为null~~,~~从而无法在拦截器正确移除已退出的用户~~。(重要) +6. ssl生成证书, 保证通信的安全 +7. 定义发送快捷键 alt+enter #### Lombok的使用 1. 引入依赖 diff --git a/build.sh b/build.sh new file mode 100644 index 0000000000000000000000000000000000000000..7efecccb8cedf86d299ae72dba3b495dc1f266c7 --- /dev/null +++ b/build.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +PID=$(ps -ef | grep websocket-demo | grep -v grep | awk '{ print $2 }') +if [ -z "$PID" ] +then + echo Application is not found +else + echo kill $PID + kill -9 $PID +fi +BUILD_ID=dontKillMe +# 跳过测试编译 +mvn clean package -Dmaven.test.skip=true +nohup java -jar -Xms256m -Xmx256m target/*.jar & \ No newline at end of file diff --git a/debug.sh b/debug.sh new file mode 100644 index 0000000000000000000000000000000000000000..be0a53ac44b93dfcafc9b25294407279979258b8 --- /dev/null +++ b/debug.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +PID=$(ps -ef | grep websocket-demo | grep -v grep | awk '{ print $2 }') +if [ -z "$PID" ] +then + echo Application is not found +else + echo kill $PID + kill -9 $PID +fi +BUILD_ID=dontKillMe +# 跳过测试编译 +mvn clean package -Dmaven.test.skip=true + +nohup java -Xdebug -Xrunjdwp:transport=dt_socket,address=8280,server=y,suspend=n -jar -Dhudson.util.ProcessTree.disable=true target/*.jar & +#nohup java -jar -Xms256m -Xmx256m target/*.jar & \ No newline at end of file diff --git a/pom.xml b/pom.xml index e223b70dcb07f172ab6195f755cff6896ad17c0b..3cabf2a4542b1bda2dee37de7d94b9b53a1ae6fc 100644 --- a/pom.xml +++ b/pom.xml @@ -15,7 +15,7 @@ Demo project for Spring Boot UTF-8 - 11 + 8 diff --git a/shutdown.sh b/shutdown.sh new file mode 100644 index 0000000000000000000000000000000000000000..0ee86e008af4c462f2502711ab10c79442f20f62 --- /dev/null +++ b/shutdown.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +PID=$(ps -ef | grep websocket-demo | grep -v grep | awk '{ print $2 }') +if [ -z "$PID" ] +then + echo Application is not found +else + echo kill $PID + kill -9 $PID + echo Application is already stopped +fi diff --git a/src/main/java/com/websocket/websocketdemo/WebsocketDemoApplication.java b/src/main/java/com/websocket/websocketdemo/WebsocketDemoApplication.java index 2ca111218d15807514c7e3d29844f24e69cbd301..69e3e5bc570f4c409c5fb84eb3a7947f3dbc9b08 100644 --- a/src/main/java/com/websocket/websocketdemo/WebsocketDemoApplication.java +++ b/src/main/java/com/websocket/websocketdemo/WebsocketDemoApplication.java @@ -12,4 +12,4 @@ public class WebsocketDemoApplication { SpringApplication.run(WebsocketDemoApplication.class, args); } -} +} \ No newline at end of file diff --git a/src/main/java/com/websocket/websocketdemo/controller/CertificationController.java b/src/main/java/com/websocket/websocketdemo/controller/CertificationController.java index f2376b458c84bc888f3abd80eb951d45942af8c4..c77a46a4b790a82cc65b4d1839db94471feec967 100644 --- a/src/main/java/com/websocket/websocketdemo/controller/CertificationController.java +++ b/src/main/java/com/websocket/websocketdemo/controller/CertificationController.java @@ -33,8 +33,7 @@ public class CertificationController { result.setFlag(true); log.info(user+"登录验证成功"); httpSession.setAttribute("user",user); - } - else if ("王五".equals(user)&&"123".equals(pwd)){ + }else if ("王五".equals(user)&&"123".equals(pwd)){ result.setFlag(true); log.info(user+"登录验证成功"); httpSession.setAttribute("user",user); diff --git a/src/main/java/com/websocket/websocketdemo/interceptor/UserInterceptor.java b/src/main/java/com/websocket/websocketdemo/interceptor/UserInterceptor.java index ad111cd3b9ff1e6365caea3ab430dc487d423bbf..fa2bcad221f30dab1a2d3cdc462152acb5bffb77 100644 --- a/src/main/java/com/websocket/websocketdemo/interceptor/UserInterceptor.java +++ b/src/main/java/com/websocket/websocketdemo/interceptor/UserInterceptor.java @@ -26,7 +26,12 @@ public class UserInterceptor implements HandlerInterceptor { HttpSession httpSession = request.getSession(); String username = (String) httpSession.getAttribute("user"); log.info("进入拦截器"+"==="+"进入拦截器的用户是:"+username); - if(username != null && !onLineUsers.containsKey(username)){ + + /* + session有效用户放行username + */ + if(username != null){ +// if(username != null && !onLineUsers.containsKey(username)){ onLineUsers.put(username,username); log.info("已进入拦截器判断"); log.info("已存储的用户01"+onLineUsers); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 78b1d6a349199d6fdf4af4be95cfccf384e736ec..c5e1b35665d179e56d5b437df7f8246f4b329dd8 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 8080 + port: 8200 spring: thymeleaf: diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml new file mode 100644 index 0000000000000000000000000000000000000000..0ef4ebbdc67552ec8bce75eb07766b52a1a881b1 --- /dev/null +++ b/src/main/resources/logback.xml @@ -0,0 +1,176 @@ + + + + + SpringBootLogbacK + + + + + + + + + ${LOG_PATH}/${APPDIR}/log_error.log + + + + ${LOG_PATH}/${APPDIR}/error/log-error-%d{yyyy-MM-dd}.%i.log + + + 10MB + + + + true + + + ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger Line:%-3L - %msg%n + utf-8 + + + + error + ACCEPT + DENY + + + + + + + ${LOG_PATH}/${APPDIR}/log_debug.log + + + + ${LOG_PATH}/${APPDIR}/debug/log-debug-%d{yyyy-MM-dd}.%i.log + + + 10MB + + + + true + + + ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger Line:%-3L - %msg%n + utf-8 + + + + debug + ACCEPT + DENY + + + + + + + + + + + + ${LOG_PATH}/${APPDIR}/log_info.log + + + + ${LOG_PATH}/${APPDIR}/info/log-info-%d{yyyy-MM-dd}.%i.log + + + 10MB + + + + true + + + ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger Line:%-3L - %msg%n + utf-8 + + + + info + ACCEPT + DENY + + + + + + + ${LOG_PATH}/${APPDIR}/log_mybatis.log + + + + ${LOG_PATH}/${APPDIR}/mybatis/log-mybatis-%d{yyyy-MM-dd}.%i.log + + + 10MB + + + + true + + + ===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %logger Line:%-3L - %msg%n + utf-8 + + + + + ACCEPT + DENY + + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS, Asia/Shanghai} %highlight(%5p) --- [%-5t] %cyan(%c{36}): %m%n + utf-8 + + + + debug + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/templates/main.html b/src/main/resources/templates/main.html index f0fcb95964ba79b290f784ed1970696871a55fcc..90e525a5c097be03d81f39515a26cfefe68d68ec 100644 --- a/src/main/resources/templates/main.html +++ b/src/main/resources/templates/main.html @@ -132,6 +132,7 @@ //获取host解决后端获取httpsession的空指针异常 var host = window.location.host; var ws = new WebSocket("ws://"+host+"/chat"); + //ws建立onopen会不会阻塞 ?? ws.onopen = function (evt) { $("#username").html("

用户:"+ username +"-在线

"); } @@ -205,19 +206,19 @@ }) }) - + - + + + + + + + + \ No newline at end of file