refactor: 重构WebSocket服务及相关实体类

重构WebSocket服务名称从WebSocketService改为WebSocketClientService,并实现Serializable接口
添加WebSocket常量定义和消息处理实现
优化实体类equals和hashCode方法
修复控制器路径和日志配置
添加查询服务和任务接口方法
This commit is contained in:
2025-09-17 11:45:50 +08:00
parent 30deb0a280
commit c42ff7501d
152 changed files with 1933 additions and 999 deletions

View File

@@ -17,8 +17,8 @@ import java.util.Map;
import java.util.concurrent.ScheduledExecutorService;
@Service
public class WebSocketTaskManager implements InitializingBean {
private static final Logger logger = LoggerFactory.getLogger(WebSocketTaskManager.class);
public class WebSocketServerTaskManager implements InitializingBean {
private static final Logger logger = LoggerFactory.getLogger(WebSocketServerTaskManager.class);
@Autowired
private ObjectMapper objectMapper;
@Autowired
@@ -56,10 +56,12 @@ public class WebSocketTaskManager implements InitializingBean {
}
private void createTask(WebSocketSession session, String sessionId, JsonNode jsonNode) {
if (!jsonNode.has("taskName")) {
throw new IllegalArgumentException("缺失 taskName 参数");
if (!jsonNode.has(WebSocketConstant.ARGUMENTS_FIELD_NAME)) {
throw new IllegalArgumentException("缺失 " + WebSocketConstant.ARGUMENTS_FIELD_NAME + " 参数");
}
String taskName = jsonNode.get("taskName").asText();
JsonNode argsNode = jsonNode.get(WebSocketConstant.ARGUMENTS_FIELD_NAME);
String taskName = argsNode.get(0).asText();
String clzName = taskClzMap.get(taskName);
if (clzName == null) {
@@ -78,7 +80,10 @@ public class WebSocketTaskManager implements InitializingBean {
if (tasker instanceof WebSocketServerTasker t) {
t.setTitleHandler(title -> sendToSession(session, sessionId, "title", title));
t.setMessageHandler(msg -> sendMessageToSession(session, sessionId, msg));
t.init(jsonNode);
t.setPropertyHandler((name, value) -> sendToSession(session, sessionId, "property", name, value));
t.setProgressHandler((current, total) -> sendToSession(session, sessionId, "progress", current, total));
t.init(argsNode);
scheduledExecutorService.submit(t);
}
}
@@ -92,7 +97,7 @@ public class WebSocketTaskManager implements InitializingBean {
String text = objectMapper.writeValueAsString(Map.of(
WebSocketConstant.SESSION_ID_FIELD_NAME, sessionId,
"type", type,
"args", args
WebSocketConstant.ARGUMENTS_FIELD_NAME, args
));
session.sendMessage(new TextMessage(text));
} catch (IOException e) {

View File

@@ -4,12 +4,20 @@ import com.ecep.contract.Message;
import com.fasterxml.jackson.databind.JsonNode;
import java.util.concurrent.Callable;
import java.util.function.BiConsumer;
import java.util.function.Predicate;
public interface WebSocketTasker extends Callable<Object> {
public interface WebSocketServerTasker extends Callable<Object> {
/**
* 设置消息处理函数
*/
void setMessageHandler(Predicate<Message> messageHandler);
void setTitleHandler(Predicate<String> titleHandler);
void init(JsonNode jsonNode);
void setPropertyHandler(BiConsumer<String, Object> propertyHandler);
void init(JsonNode argsNode);
void setProgressHandler(BiConsumer<Long, Long> progressHandler);
}

View File

@@ -10,7 +10,7 @@ import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import com.ecep.contract.handler.MessageNotitfication;
import com.ecep.contract.handler.WebSocketHandler;
import com.ecep.contract.handler.WebSocketServerHandler;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
@@ -21,11 +21,11 @@ import com.fasterxml.jackson.databind.ObjectMapper;
public class WebSocketService {
private static final Logger logger = Logger.getLogger(WebSocketService.class.getName());
private final WebSocketHandler webSocketHandler;
private final WebSocketServerHandler webSocketHandler;
@Autowired
private ObjectMapper objectMapper;
public WebSocketService(WebSocketHandler webSocketHandler) {
public WebSocketService(WebSocketServerHandler webSocketHandler) {
this.webSocketHandler = webSocketHandler;
}