Переглянути джерело

去掉登录之后发送消息

humuyu 3 роки тому
батько
коміт
3a096c708a

+ 0 - 1
eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java

@@ -197,7 +197,6 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
 
 	public static String getBrowser(HttpServletRequest request) {
 		String userAgent = request.getHeader("User-Agent");
-		System.out.println("浏览器的消息头:" + userAgent);
 		// 以空格来处理
 		try {
 			String[] browser = userAgent.split(" ");

+ 4 - 0
eladmin-security/src/main/java/me/zhengjie/security/security/TokenProvider.java

@@ -148,4 +148,8 @@ public class TokenProvider implements InitializingBean {
 		}
 		return null;
 	}
+	public Object getToken(String token) {
+		return redisUtils.get(properties.getOnlineKey() + token);
+		
+	}
 }

+ 21 - 1
eladmin-system/src/main/java/me/zhengjie/base/websocket/AppSocketServer.java

@@ -12,16 +12,22 @@ import javax.websocket.server.PathParam;
 import javax.websocket.server.ServerEndpoint;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import me.zhengjie.security.security.TokenProvider;
+
 @ServerEndpoint("/appSocketServer/{sname}")
 @Component
 public class AppSocketServer {
+
 	private static final Logger log = LoggerFactory.getLogger(AppSocketServer.class);
 	private static int onlineCount = 0;
 	private static CopyOnWriteArraySet<AppSocketServer> webSocketSet = new CopyOnWriteArraySet<>();
 	private Session session;
 	private String sname = "";
+	@Autowired
+	TokenProvider tokenProvider;
 
 	public AppSocketServer() {
 		// com.gangquan360.smartadmin.module.employee.EmployeeController.query dd;
@@ -69,14 +75,28 @@ public class AppSocketServer {
 
 	@OnMessage
 	public void onMessage(String message, Session session) {
+		String[] msgs = null;
+		String heartbeat = message;
+		if (message.contains(",")) {
+			msgs = message.split(",");
+			heartbeat = msgs[0];
+		}
 		log.info("收到来自窗口" + this.sname + "的信息:" + message);
 		Iterator<AppSocketServer> iterator = webSocketSet.iterator();
 
 		while (iterator.hasNext()) {
 			AppSocketServer item = (AppSocketServer) iterator.next();
 			try {
+				// 判断token是否存在,不存在则删除
 				if (item.sname.equals(this.sname)) {
-					item.sendMessage(message);
+					if (msgs != null && msgs[1] != null) {
+						Object obj = tokenProvider.getToken(msgs[1]);
+						if (obj == null) {
+							item.sendMessage("close");
+							continue;
+						}
+					}
+					item.sendMessage(heartbeat);
 				}
 			} catch (IOException e) {
 				e.printStackTrace();