|
@@ -32,7 +32,7 @@ public class actionSocket {
|
|
|
private String mainUrl;
|
|
|
|
|
|
|
|
|
- private static Map<String, actionSocket> componentSocketMap = new ConcurrentHashMap<>();
|
|
|
+ private static Map<String, Thread> socketSessionBizMap = new ConcurrentHashMap<>();
|
|
|
|
|
|
@Autowired
|
|
|
private RedisUtil redisUtil;
|
|
@@ -67,18 +67,29 @@ public class actionSocket {
|
|
|
@OnClose
|
|
|
public void onClose(Session session) throws IOException, InterruptedException {
|
|
|
actionSocket.log.info("one connection closed");
|
|
|
- if (thread != null) {
|
|
|
- Thread.sleep(1000);
|
|
|
- thread.interrupt();
|
|
|
- }
|
|
|
+ actionSocket.socketSessionBizMap.keySet().stream().forEach(
|
|
|
+ key -> {
|
|
|
+ if (key.contains(session.id().toString())) {
|
|
|
+ actionSocket.socketSessionBizMap.get(key).interrupt();
|
|
|
+ actionSocket.socketSessionBizMap.remove(key);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
@OnError
|
|
|
- public void onError(Session session, Throwable throwable) {
|
|
|
+ public void onError(Session session, Throwable throwable) throws InterruptedException {
|
|
|
throwable.printStackTrace();
|
|
|
- if (thread != null) {
|
|
|
- thread.interrupt();
|
|
|
- }
|
|
|
+ actionSocket.socketSessionBizMap.keySet().stream().forEach(
|
|
|
+ key -> {
|
|
|
+ if (key.contains(session.id().toString())) {
|
|
|
+ actionSocket.socketSessionBizMap.get(key).interrupt();
|
|
|
+ actionSocket.socketSessionBizMap.remove(key);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
@OnMessage
|
|
@@ -91,33 +102,53 @@ public class actionSocket {
|
|
|
res.set("action", action);
|
|
|
//业务处理 调用异步线程,处理成功返回消息,连接断开,销毁线程
|
|
|
if (JSONUtil.isJson(message)) {
|
|
|
- switch (action) {
|
|
|
- case "componentBiz":
|
|
|
- ComponentBizImpl componentBiz = new ComponentBizImpl();
|
|
|
- String componentBizCallId = componentBiz.getCallId();
|
|
|
- componentBiz.todo(session, message, componentBizCallId);
|
|
|
- componentBiz.listenResult(this::sendMessage, componentBizCallId, new ParamContext("session", session));
|
|
|
- break;
|
|
|
- case "modelUploadBiz":
|
|
|
- ModelUploadBizImpl modelUploadBiz = new ModelUploadBizImpl();
|
|
|
- String modelUploadBizCallId = modelUploadBiz.getCallId();
|
|
|
- modelUploadBiz.todo(session, message, modelUploadBizCallId);
|
|
|
- modelUploadBiz.listenResult(this::sendMessage, modelUploadBizCallId, new ParamContext("session", session));
|
|
|
- break;
|
|
|
- case "createImgBiz":
|
|
|
- CreateImgBizImpl createImgBiz = new CreateImgBizImpl();
|
|
|
- String createImgBizCallId = createImgBiz.getCallId();
|
|
|
- createImgBiz.todo(session, message, createImgBizCallId);
|
|
|
- createImgBiz.listenResult(this::sendMessage, createImgBizCallId, new ParamContext("session", session));
|
|
|
- break;
|
|
|
- case "componentCreateImgBiz":
|
|
|
- ComponentCreateImgBizImpl componentCreateImgBiz = new ComponentCreateImgBizImpl();
|
|
|
- String componentCreateImgBizCallId = componentCreateImgBiz.getCallId();
|
|
|
- componentCreateImgBiz.todo(session, message, componentCreateImgBizCallId);
|
|
|
- componentCreateImgBiz.listenResult(this::sendMessage, componentCreateImgBizCallId, new ParamContext("session", session));
|
|
|
- break;
|
|
|
+ try {
|
|
|
+ switch (action) {
|
|
|
+ case "componentBiz":
|
|
|
+ ComponentBizImpl componentBiz = new ComponentBizImpl();
|
|
|
+ String componentBizCallId = componentBiz.getCallId();
|
|
|
+ if (!actionSocket.socketSessionBizMap.containsKey("componentBiz-id" + data.getInt("id") + "session" + session.id())) {
|
|
|
+ Thread componentBizTodo = componentBiz.todo(session, message, componentBizCallId);
|
|
|
+ actionSocket.socketSessionBizMap.put("componentBiz-id" + data.getInt("id") + "session" + session.id(), componentBizTodo);
|
|
|
+ componentBizTodo.start();
|
|
|
+ componentBiz.listenResult(this::sendMessage, componentBizCallId, new ParamContext("session", session));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "modelUploadBiz":
|
|
|
+ ModelUploadBizImpl modelUploadBiz = new ModelUploadBizImpl();
|
|
|
+ String modelUploadBizCallId = modelUploadBiz.getCallId();
|
|
|
+ if (!actionSocket.socketSessionBizMap.containsKey("modelUploadBiz-id" + data.getInt("id") + "session" + session.id())) {
|
|
|
+ Thread modelUploadBizTodo = modelUploadBiz.todo(session, message, modelUploadBizCallId);
|
|
|
+ actionSocket.socketSessionBizMap.put("modelUploadBiz-id" + data.getInt("id") + "session" + session.id(), modelUploadBizTodo);
|
|
|
+ modelUploadBizTodo.start();
|
|
|
+ modelUploadBiz.listenResult(this::sendMessage, modelUploadBizCallId, new ParamContext("session", session));
|
|
|
+
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "createImgBiz":
|
|
|
+ if (!actionSocket.socketSessionBizMap.containsKey("createImgBiz-id" + data.getInt("id") + "session" + session.id())) {
|
|
|
+ CreateImgBizImpl createImgBiz = new CreateImgBizImpl();
|
|
|
+ String createImgBizCallId = createImgBiz.getCallId();
|
|
|
+ Thread createImgBizTodo = createImgBiz.todo(session, message, createImgBizCallId);
|
|
|
+ actionSocket.socketSessionBizMap.put("createImgBiz-id" + data.getInt("id") + "session" + session.id(), createImgBizTodo);
|
|
|
+ createImgBizTodo.start();
|
|
|
+ createImgBiz.listenResult(this::sendMessage, createImgBizCallId, new ParamContext("session", session));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "componentCreateImgBiz":
|
|
|
+ if (!actionSocket.socketSessionBizMap.containsKey("componentCreateImgBiz-id" + data.getInt("id") + "session" + session.id())) {
|
|
|
+ ComponentCreateImgBizImpl componentCreateImgBiz = new ComponentCreateImgBizImpl();
|
|
|
+ String componentCreateImgBizCallId = componentCreateImgBiz.getCallId();
|
|
|
+ Thread componentCreateImgBizTodo = componentCreateImgBiz.todo(session, message, componentCreateImgBizCallId);
|
|
|
+ actionSocket.socketSessionBizMap.put("componentCreateImgBiz-id" + data.getInt("id") + "session" + session.id(), componentCreateImgBizTodo);
|
|
|
+ componentCreateImgBizTodo.start();
|
|
|
+ componentCreateImgBiz.listenResult(this::sendMessage, componentCreateImgBizCallId, new ParamContext("session", session));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ return;
|
|
|
}
|
|
|
-
|
|
|
} else {
|
|
|
res.set("code", 400);
|
|
|
res.set("msg", "Not for Json");
|