mirror of
https://gitee.com/zhijiantianya/ruoyi-vue-pro.git
synced 2026-03-22 05:07:17 +08:00
perf:【iot】IotDataSinkWebSocketConfig 常量枚举
This commit is contained in:
@@ -13,6 +13,51 @@ import lombok.Data;
|
||||
@Data
|
||||
public class IotDataSinkWebSocketConfig extends IotAbstractDataSinkConfig {
|
||||
|
||||
/**
|
||||
* 默认连接超时时间(毫秒)
|
||||
*/
|
||||
public static final int DEFAULT_CONNECT_TIMEOUT_MS = 5000;
|
||||
/**
|
||||
* 默认发送超时时间(毫秒)
|
||||
*/
|
||||
public static final int DEFAULT_SEND_TIMEOUT_MS = 10000;
|
||||
/**
|
||||
* 默认心跳间隔时间(毫秒)
|
||||
*/
|
||||
public static final long DEFAULT_HEARTBEAT_INTERVAL_MS = 30000L;
|
||||
/**
|
||||
* 默认心跳消息内容
|
||||
*/
|
||||
public static final String DEFAULT_HEARTBEAT_MESSAGE = "{\"type\":\"heartbeat\"}";
|
||||
/**
|
||||
* 默认是否启用 SSL 证书验证
|
||||
*/
|
||||
public static final boolean DEFAULT_VERIFY_SSL_CERT = true;
|
||||
/**
|
||||
* 默认数据格式
|
||||
*/
|
||||
public static final String DEFAULT_DATA_FORMAT = "JSON";
|
||||
/**
|
||||
* 默认重连间隔时间(毫秒)
|
||||
*/
|
||||
public static final long DEFAULT_RECONNECT_INTERVAL_MS = 5000L;
|
||||
/**
|
||||
* 默认最大重连次数
|
||||
*/
|
||||
public static final int DEFAULT_MAX_RECONNECT_ATTEMPTS = 3;
|
||||
/**
|
||||
* 默认是否启用压缩
|
||||
*/
|
||||
public static final boolean DEFAULT_ENABLE_COMPRESSION = false;
|
||||
/**
|
||||
* 默认消息发送重试次数
|
||||
*/
|
||||
public static final int DEFAULT_SEND_RETRY_COUNT = 1;
|
||||
/**
|
||||
* 默认消息发送重试间隔(毫秒)
|
||||
*/
|
||||
public static final long DEFAULT_SEND_RETRY_INTERVAL_MS = 1000L;
|
||||
|
||||
/**
|
||||
* WebSocket 服务器地址
|
||||
* 例如:ws://localhost:8080/ws 或 wss://example.com/ws
|
||||
@@ -22,22 +67,22 @@ public class IotDataSinkWebSocketConfig extends IotAbstractDataSinkConfig {
|
||||
/**
|
||||
* 连接超时时间(毫秒)
|
||||
*/
|
||||
private Integer connectTimeoutMs = 5000;
|
||||
private Integer connectTimeoutMs = DEFAULT_CONNECT_TIMEOUT_MS;
|
||||
|
||||
/**
|
||||
* 发送超时时间(毫秒)
|
||||
*/
|
||||
private Integer sendTimeoutMs = 10000;
|
||||
private Integer sendTimeoutMs = DEFAULT_SEND_TIMEOUT_MS;
|
||||
|
||||
/**
|
||||
* 心跳间隔时间(毫秒),0 表示不启用心跳
|
||||
*/
|
||||
private Long heartbeatIntervalMs = 30000L;
|
||||
private Long heartbeatIntervalMs = DEFAULT_HEARTBEAT_INTERVAL_MS;
|
||||
|
||||
/**
|
||||
* 心跳消息内容(JSON 格式)
|
||||
*/
|
||||
private String heartbeatMessage = "{\"type\":\"heartbeat\"}";
|
||||
private String heartbeatMessage = DEFAULT_HEARTBEAT_MESSAGE;
|
||||
|
||||
/**
|
||||
* 子协议列表(逗号分隔)
|
||||
@@ -52,36 +97,36 @@ public class IotDataSinkWebSocketConfig extends IotAbstractDataSinkConfig {
|
||||
/**
|
||||
* 是否启用 SSL 证书验证(仅对 wss:// 生效)
|
||||
*/
|
||||
private Boolean verifySslCert = true;
|
||||
private Boolean verifySslCert = DEFAULT_VERIFY_SSL_CERT;
|
||||
|
||||
/**
|
||||
* 数据格式:JSON 或 TEXT
|
||||
*/
|
||||
private String dataFormat = "JSON";
|
||||
private String dataFormat = DEFAULT_DATA_FORMAT;
|
||||
|
||||
/**
|
||||
* 重连间隔时间(毫秒)
|
||||
*/
|
||||
private Long reconnectIntervalMs = 5000L;
|
||||
private Long reconnectIntervalMs = DEFAULT_RECONNECT_INTERVAL_MS;
|
||||
|
||||
/**
|
||||
* 最大重连次数
|
||||
*/
|
||||
private Integer maxReconnectAttempts = 3;
|
||||
private Integer maxReconnectAttempts = DEFAULT_MAX_RECONNECT_ATTEMPTS;
|
||||
|
||||
/**
|
||||
* 是否启用压缩
|
||||
*/
|
||||
private Boolean enableCompression = false;
|
||||
private Boolean enableCompression = DEFAULT_ENABLE_COMPRESSION;
|
||||
|
||||
/**
|
||||
* 消息发送重试次数
|
||||
*/
|
||||
private Integer sendRetryCount = 1;
|
||||
private Integer sendRetryCount = DEFAULT_SEND_RETRY_COUNT;
|
||||
|
||||
/**
|
||||
* 消息发送重试间隔(毫秒)
|
||||
*/
|
||||
private Long sendRetryIntervalMs = 1000L;
|
||||
private Long sendRetryIntervalMs = DEFAULT_SEND_RETRY_INTERVAL_MS;
|
||||
|
||||
}
|
||||
@@ -16,8 +16,8 @@ import java.util.Arrays;
|
||||
public enum IotDataSinkTypeEnum implements ArrayValuable<Integer> {
|
||||
|
||||
HTTP(1, "HTTP"),
|
||||
TCP(2, "TCP"), // TODO @puhui999:待实现;
|
||||
WEBSOCKET(3, "WebSocket"), // TODO @puhui999:待实现;
|
||||
TCP(2, "TCP"),
|
||||
WEBSOCKET(3, "WebSocket"),
|
||||
|
||||
MQTT(10, "MQTT"), // TODO 待实现;
|
||||
|
||||
|
||||
@@ -7,8 +7,6 @@ import cn.iocoder.yudao.module.iot.service.rule.data.action.tcp.IotTcpClient;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
/**
|
||||
* TCP 的 {@link IotDataRuleAction} 实现类
|
||||
* <p>
|
||||
@@ -23,9 +21,6 @@ import java.time.Duration;
|
||||
public class IotTcpDataRuleAction extends
|
||||
IotDataRuleCacheableAction<IotDataSinkTcpConfig, IotTcpClient> {
|
||||
|
||||
private static final Duration CONNECT_TIMEOUT = Duration.ofSeconds(5);
|
||||
private static final Duration SEND_TIMEOUT = Duration.ofSeconds(10);
|
||||
|
||||
@Override
|
||||
public Integer getType() {
|
||||
return IotDataSinkTypeEnum.TCP.getType();
|
||||
|
||||
@@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.iot.service.rule.data.action.websocket;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
|
||||
import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage;
|
||||
import cn.iocoder.yudao.module.iot.dal.dataobject.rule.config.IotDataSinkWebSocketConfig;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.net.URI;
|
||||
@@ -36,9 +37,9 @@ public class IotWebSocketClient implements WebSocket.Listener {
|
||||
|
||||
public IotWebSocketClient(String serverUrl, Integer connectTimeoutMs, Integer sendTimeoutMs, String dataFormat) {
|
||||
this.serverUrl = serverUrl;
|
||||
this.connectTimeoutMs = connectTimeoutMs != null ? connectTimeoutMs : 5000;
|
||||
this.sendTimeoutMs = sendTimeoutMs != null ? sendTimeoutMs : 10000;
|
||||
this.dataFormat = dataFormat != null ? dataFormat : "JSON";
|
||||
this.connectTimeoutMs = connectTimeoutMs != null ? connectTimeoutMs : IotDataSinkWebSocketConfig.DEFAULT_CONNECT_TIMEOUT_MS;
|
||||
this.sendTimeoutMs = sendTimeoutMs != null ? sendTimeoutMs : IotDataSinkWebSocketConfig.DEFAULT_SEND_TIMEOUT_MS;
|
||||
this.dataFormat = dataFormat != null ? dataFormat : IotDataSinkWebSocketConfig.DEFAULT_DATA_FORMAT;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -113,7 +114,7 @@ public class IotWebSocketClient implements WebSocket.Listener {
|
||||
|
||||
try {
|
||||
String messageData;
|
||||
if ("JSON".equalsIgnoreCase(dataFormat)) {
|
||||
if (IotDataSinkWebSocketConfig.DEFAULT_DATA_FORMAT.equalsIgnoreCase(dataFormat)) {
|
||||
messageData = JsonUtils.toJsonString(message);
|
||||
} else {
|
||||
messageData = message.toString();
|
||||
|
||||
Reference in New Issue
Block a user