This is an automated email from the ASF dual-hosted git repository.
sabersola pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new 7f472d7 admin websocket code polish (#2306)
7f472d7 is described below
commit 7f472d7cbc2e2b4e8aa561219bd996e6f58c177a
Author: midnight2104 <[email protected]>
AuthorDate: Mon Nov 8 14:07:31 2021 +0800
admin websocket code polish (#2306)
---
.../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());