wangwei 5 years ago
parent
commit
2f2e4cebcd

+ 9 - 5
src/main/java/cn/com/qmth/examcloud/ws/core/MessageHandlerHolder.java

@@ -29,8 +29,12 @@ public class MessageHandlerHolder implements ApplicationRunner {
 
 
 	private static Map<String, Object> beanMap = Maps.newConcurrentMap();
 	private static Map<String, Object> beanMap = Maps.newConcurrentMap();
 
 
-	public static Method getMethod(String mapping) {
-		return methodMap.get(mapping);
+	public static Method getMethod(String path) {
+		return methodMap.get(path);
+	}
+
+	public static Object getBean(String path) {
+		return beanMap.get(path);
 	}
 	}
 
 
 	@Override
 	@Override
@@ -53,9 +57,9 @@ public class MessageHandlerHolder implements ApplicationRunner {
 				}
 				}
 				String valueOfMethod = messageHandlerOfMethod.value();
 				String valueOfMethod = messageHandlerOfMethod.value();
 
 
-				String mapping = join(valueOfClass, valueOfMethod);
-				methodMap.put(mapping, method);
-				beanMap.put(mapping, bean);
+				String path = join(valueOfClass, valueOfMethod);
+				methodMap.put(path, method);
+				beanMap.put(path, bean);
 			}
 			}
 
 
 		}
 		}

+ 10 - 10
src/main/java/cn/com/qmth/examcloud/ws/core/MessageIn.java

@@ -19,9 +19,9 @@ public class MessageIn implements JsonSerializable {
 
 
 	private String token;
 	private String token;
 
 
-	private String eventType;
+	private String path;
 
 
-	private String eventId;
+	private String traceId;
 
 
 	private Object content;
 	private Object content;
 
 
@@ -49,20 +49,20 @@ public class MessageIn implements JsonSerializable {
 		this.token = token;
 		this.token = token;
 	}
 	}
 
 
-	public String getEventType() {
-		return eventType;
+	public String getPath() {
+		return path;
 	}
 	}
 
 
-	public void setEventType(String eventType) {
-		this.eventType = eventType;
+	public void setPath(String path) {
+		this.path = path;
 	}
 	}
 
 
-	public String getEventId() {
-		return eventId;
+	public String getTraceId() {
+		return traceId;
 	}
 	}
 
 
-	public void setEventId(String eventId) {
-		this.eventId = eventId;
+	public void setTraceId(String traceId) {
+		this.traceId = traceId;
 	}
 	}
 
 
 	public Object getContent() {
 	public Object getContent() {

+ 24 - 2
src/main/java/cn/com/qmth/examcloud/ws/core/WebSocketServerEndpoint.java

@@ -1,6 +1,7 @@
 package cn.com.qmth.examcloud.ws.core;
 package cn.com.qmth.examcloud.ws.core;
 
 
 import java.io.IOException;
 import java.io.IOException;
+import java.lang.reflect.Method;
 
 
 import javax.websocket.OnClose;
 import javax.websocket.OnClose;
 import javax.websocket.OnError;
 import javax.websocket.OnError;
@@ -12,6 +13,7 @@ import javax.websocket.server.ServerEndpoint;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import cn.com.qmth.examcloud.commons.util.DateUtil;
 import cn.com.qmth.examcloud.commons.util.DateUtil;
+import cn.com.qmth.examcloud.commons.util.JsonUtil;
 
 
 @ServerEndpoint("/ws")
 @ServerEndpoint("/ws")
 @Component
 @Component
@@ -36,11 +38,31 @@ public class WebSocketServerEndpoint {
 	public void onMessage(Session session, String message) {
 	public void onMessage(Session session, String message) {
 		System.out.println("onMessage; session=" + session);
 		System.out.println("onMessage; session=" + session);
 		System.out.println("onMessage; message=" + message);
 		System.out.println("onMessage; message=" + message);
+
+		MessageIn messageIn = null;
 		try {
 		try {
-			session.getBasicRemote().sendText(DateUtil.chinaNow() + "| cao egg");
-		} catch (IOException e) {
+			messageIn = JsonUtil.fromJson(message, MessageIn.class);
+		} catch (Exception e) {
 			e.printStackTrace();
 			e.printStackTrace();
 		}
 		}
+
+		String path = messageIn.getPath();
+		Method method = MessageHandlerHolder.getMethod(path);
+
+		Object ret = null;
+		try {
+			ret = method.invoke(messageIn);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+
+		if (null == ret) {
+			try {
+				session.getBasicRemote().sendText(JsonUtil.toJson(ret));
+			} catch (IOException e) {
+				e.printStackTrace();
+			}
+		}
 	}
 	}
 
 
 	@OnError
 	@OnError

+ 3 - 2
src/main/java/cn/com/qmth/examcloud/ws/handler/TestHandler.java

@@ -3,14 +3,15 @@ package cn.com.qmth.examcloud.ws.handler;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import cn.com.qmth.examcloud.ws.core.MessageHandler;
 import cn.com.qmth.examcloud.ws.core.MessageHandler;
+import cn.com.qmth.examcloud.ws.core.MessageIn;
 
 
 @Component
 @Component
 @MessageHandler("test")
 @MessageHandler("test")
 public class TestHandler {
 public class TestHandler {
 
 
 	@MessageHandler
 	@MessageHandler
-	public void test() {
-
+	public MessageIn test(MessageIn messageIn) {
+		return messageIn;
 	}
 	}
 
 
 }
 }