This is an automated email from the ASF dual-hosted git repository. midnight2104 pushed a commit to branch midnight2104 in repository https://gitbox.apache.org/repos/asf/incubator-shenyu.git
commit 3d51ab2a8c601f21762f5baff4dcf7b462753fb5 Author: midnight2104 <[email protected]> AuthorDate: Mon Nov 8 13:24:10 2021 +0800 admin websocket code polish --- .../listener/websocket/WebsocketCollector.java | 47 +++++++++++++--------- .../listener/websocket/WebsocketListener.java | 5 ++- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/listener/websocket/WebsocketCollector.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/listener/websocket/WebsocketCollector.java index 189b78e..beea5e4 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/listener/websocket/WebsocketCollector.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/listener/websocket/WebsocketCollector.java @@ -34,6 +34,8 @@ import javax.websocket.Session; import javax.websocket.server.ServerEndpoint; import java.io.IOException; import java.util.Map; +import java.util.Objects; +import java.util.Optional; import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; @@ -67,11 +69,10 @@ public class WebsocketCollector { if (MapUtils.isEmpty(userProperties)) { return StringUtils.EMPTY; } - Object ipObject = userProperties.get(WebsocketListener.CLIENT_IP_NAME); - if (null == ipObject) { - return StringUtils.EMPTY; - } - return ipObject.toString(); + + return Optional.ofNullable(userProperties.get(WebsocketListener.CLIENT_IP_NAME)) + .map(Object::toString) + .orElse(StringUtils.EMPTY); } /** @@ -82,14 +83,17 @@ public class WebsocketCollector { */ @OnMessage public void onMessage(final String message, final Session session) { - if (message.equals(DataEventTypeEnum.MYSELF.name())) { - try { - ThreadLocalUtils.put(SESSION_KEY, session); - SpringBeanUtils.getInstance().getBean(SyncDataService.class).syncAll(DataEventTypeEnum.MYSELF); - } finally { - ThreadLocalUtils.clear(); - } + if (!Objects.equals(message, DataEventTypeEnum.MYSELF.name())) { + return; } + + try { + ThreadLocalUtils.put(SESSION_KEY, session); + SpringBeanUtils.getInstance().getBean(SyncDataService.class).syncAll(DataEventTypeEnum.MYSELF); + } finally { + ThreadLocalUtils.clear(); + } + } /** @@ -124,16 +128,19 @@ public class WebsocketCollector { * @param type the type */ public static void send(final String message, final DataEventTypeEnum type) { - if (StringUtils.isNotBlank(message)) { - if (DataEventTypeEnum.MYSELF == type) { - Session session = (Session) ThreadLocalUtils.get(SESSION_KEY); - if (session != null) { - sendMessageBySession(session, message); - } - } else { - SESSION_SET.forEach(session -> sendMessageBySession(session, message)); + if (StringUtils.isBlank(message)) { + return; + } + + if (DataEventTypeEnum.MYSELF == type) { + Session session = (Session) ThreadLocalUtils.get(SESSION_KEY); + if (Objects.nonNull(session)) { + sendMessageBySession(session, message); } + } else { + SESSION_SET.forEach(session -> sendMessageBySession(session, message)); } + } private static synchronized void sendMessageBySession(final Session session, final String message) { diff --git a/shenyu-admin/src/main/java/org/apache/shenyu/admin/listener/websocket/WebsocketListener.java b/shenyu-admin/src/main/java/org/apache/shenyu/admin/listener/websocket/WebsocketListener.java index dde0838..b246249 100644 --- a/shenyu-admin/src/main/java/org/apache/shenyu/admin/listener/websocket/WebsocketListener.java +++ b/shenyu-admin/src/main/java/org/apache/shenyu/admin/listener/websocket/WebsocketListener.java @@ -26,6 +26,7 @@ import javax.servlet.ServletRequestListener; import javax.servlet.annotation.WebListener; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +import java.util.Objects; /** * The Websocket listener. @@ -44,7 +45,7 @@ public class WebsocketListener implements ServletRequestListener { public void requestDestroyed(final ServletRequestEvent sre) { try { HttpServletRequest request = (HttpServletRequest) sre.getServletRequest(); - if (null != request && null != request.getSession()) { + if (Objects.nonNull(request) && Objects.nonNull(request.getSession())) { HttpSession session = request.getSession(); request.removeAttribute(CLIENT_IP_NAME); session.removeAttribute(CLIENT_IP_NAME); @@ -58,7 +59,7 @@ public class WebsocketListener implements ServletRequestListener { public void requestInitialized(final ServletRequestEvent sre) { try { HttpServletRequest request = (HttpServletRequest) sre.getServletRequest(); - if (null != request && null != request.getSession()) { + if (Objects.nonNull(request) && Objects.nonNull(request.getSession())) { HttpSession session = request.getSession(); request.setAttribute(CLIENT_IP_NAME, sre.getServletRequest().getRemoteAddr()); session.setAttribute(CLIENT_IP_NAME, sre.getServletRequest().getRemoteAddr());
