refactor: 重构WebSocket服务及相关实体类
重构WebSocket服务名称从WebSocketService改为WebSocketClientService,并实现Serializable接口 添加WebSocket常量定义和消息处理实现 优化实体类equals和hashCode方法 修复控制器路径和日志配置 添加查询服务和任务接口方法
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user