|
@@ -1,27 +1,26 @@
|
|
|
package cn.com.qmth.examcloud.ws.core;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
-import java.lang.reflect.Method;
|
|
|
|
|
|
import javax.websocket.OnClose;
|
|
|
import javax.websocket.OnError;
|
|
|
import javax.websocket.OnMessage;
|
|
|
import javax.websocket.OnOpen;
|
|
|
import javax.websocket.Session;
|
|
|
+import javax.websocket.server.PathParam;
|
|
|
import javax.websocket.server.ServerEndpoint;
|
|
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import cn.com.qmth.examcloud.commons.util.DateUtil;
|
|
|
-import cn.com.qmth.examcloud.commons.util.JsonUtil;
|
|
|
|
|
|
@ServerEndpoint("/{path}")
|
|
|
@Component
|
|
|
public class WebSocketServerEndpoint {
|
|
|
|
|
|
@OnOpen
|
|
|
- public void onOpen(Session session) {
|
|
|
- System.out.println("onOpen; session=" + session);
|
|
|
+ public void onOpen(Session session, @PathParam("path") String path) {
|
|
|
+ System.out.println("onOpen; session=" + session + "; path=" + path);
|
|
|
try {
|
|
|
session.getBasicRemote().sendText(DateUtil.chinaNow() + "| fuck");
|
|
|
} catch (IOException e) {
|
|
@@ -30,47 +29,19 @@ public class WebSocketServerEndpoint {
|
|
|
}
|
|
|
|
|
|
@OnClose
|
|
|
- public void onClose(Session session) {
|
|
|
- System.out.println("onClose; session=" + session);
|
|
|
+ public void onClose(Session session, @PathParam("path") String path) {
|
|
|
+ System.out.println("onClose; session=" + session + "; path=" + path);
|
|
|
}
|
|
|
|
|
|
@OnMessage
|
|
|
- public void onMessage(Session session, String message) {
|
|
|
- System.out.println("onMessage; session=" + session);
|
|
|
+ public void onMessage(Session session, @PathParam("path") String path, String message) {
|
|
|
+ System.out.println("onMessage; session=" + session + "; path=" + path);
|
|
|
System.out.println("onMessage; message=" + message);
|
|
|
- if (System.currentTimeMillis() > 0) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- MessageIn messageIn = null;
|
|
|
- try {
|
|
|
- messageIn = JsonUtil.fromJson(message, MessageIn.class);
|
|
|
- } catch (Exception e) {
|
|
|
- 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
|
|
|
- public void onError(Session session, Throwable t) {
|
|
|
- System.out.println("onError; session=" + session);
|
|
|
+ public void onError(Session session, @PathParam("path") String path, Throwable t) {
|
|
|
+ System.out.println("onError; session=" + session + "; path=" + path);
|
|
|
t.printStackTrace();
|
|
|
}
|
|
|
|