Commit 9fbced1192a453d6557085b3959acead2ee9c71c

Authored by puhui999
1 parent 60817a6a

perf:【iot】IotDataSinkWebSocketConfig 常量枚举

yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/rule/config/IotDataSinkWebSocketConfig.java
... ... @@ -14,6 +14,51 @@ import lombok.Data;
14 14 public class IotDataSinkWebSocketConfig extends IotAbstractDataSinkConfig {
15 15  
16 16 /**
  17 + * 默认连接超时时间(毫秒)
  18 + */
  19 + public static final int DEFAULT_CONNECT_TIMEOUT_MS = 5000;
  20 + /**
  21 + * 默认发送超时时间(毫秒)
  22 + */
  23 + public static final int DEFAULT_SEND_TIMEOUT_MS = 10000;
  24 + /**
  25 + * 默认心跳间隔时间(毫秒)
  26 + */
  27 + public static final long DEFAULT_HEARTBEAT_INTERVAL_MS = 30000L;
  28 + /**
  29 + * 默认心跳消息内容
  30 + */
  31 + public static final String DEFAULT_HEARTBEAT_MESSAGE = "{\"type\":\"heartbeat\"}";
  32 + /**
  33 + * 默认是否启用 SSL 证书验证
  34 + */
  35 + public static final boolean DEFAULT_VERIFY_SSL_CERT = true;
  36 + /**
  37 + * 默认数据格式
  38 + */
  39 + public static final String DEFAULT_DATA_FORMAT = "JSON";
  40 + /**
  41 + * 默认重连间隔时间(毫秒)
  42 + */
  43 + public static final long DEFAULT_RECONNECT_INTERVAL_MS = 5000L;
  44 + /**
  45 + * 默认最大重连次数
  46 + */
  47 + public static final int DEFAULT_MAX_RECONNECT_ATTEMPTS = 3;
  48 + /**
  49 + * 默认是否启用压缩
  50 + */
  51 + public static final boolean DEFAULT_ENABLE_COMPRESSION = false;
  52 + /**
  53 + * 默认消息发送重试次数
  54 + */
  55 + public static final int DEFAULT_SEND_RETRY_COUNT = 1;
  56 + /**
  57 + * 默认消息发送重试间隔(毫秒)
  58 + */
  59 + public static final long DEFAULT_SEND_RETRY_INTERVAL_MS = 1000L;
  60 +
  61 + /**
17 62 * WebSocket 服务器地址
18 63 * 例如:ws://localhost:8080/ws 或 wss://example.com/ws
19 64 */
... ... @@ -22,22 +67,22 @@ public class IotDataSinkWebSocketConfig extends IotAbstractDataSinkConfig {
22 67 /**
23 68 * 连接超时时间(毫秒)
24 69 */
25   - private Integer connectTimeoutMs = 5000;
  70 + private Integer connectTimeoutMs = DEFAULT_CONNECT_TIMEOUT_MS;
26 71  
27 72 /**
28 73 * 发送超时时间(毫秒)
29 74 */
30   - private Integer sendTimeoutMs = 10000;
  75 + private Integer sendTimeoutMs = DEFAULT_SEND_TIMEOUT_MS;
31 76  
32 77 /**
33 78 * 心跳间隔时间(毫秒),0 表示不启用心跳
34 79 */
35   - private Long heartbeatIntervalMs = 30000L;
  80 + private Long heartbeatIntervalMs = DEFAULT_HEARTBEAT_INTERVAL_MS;
36 81  
37 82 /**
38 83 * 心跳消息内容(JSON 格式)
39 84 */
40   - private String heartbeatMessage = "{\"type\":\"heartbeat\"}";
  85 + private String heartbeatMessage = DEFAULT_HEARTBEAT_MESSAGE;
41 86  
42 87 /**
43 88 * 子协议列表(逗号分隔)
... ... @@ -52,36 +97,36 @@ public class IotDataSinkWebSocketConfig extends IotAbstractDataSinkConfig {
52 97 /**
53 98 * 是否启用 SSL 证书验证(仅对 wss:// 生效)
54 99 */
55   - private Boolean verifySslCert = true;
  100 + private Boolean verifySslCert = DEFAULT_VERIFY_SSL_CERT;
56 101  
57 102 /**
58 103 * 数据格式:JSON 或 TEXT
59 104 */
60   - private String dataFormat = "JSON";
  105 + private String dataFormat = DEFAULT_DATA_FORMAT;
61 106  
62 107 /**
63 108 * 重连间隔时间(毫秒)
64 109 */
65   - private Long reconnectIntervalMs = 5000L;
  110 + private Long reconnectIntervalMs = DEFAULT_RECONNECT_INTERVAL_MS;
66 111  
67 112 /**
68 113 * 最大重连次数
69 114 */
70   - private Integer maxReconnectAttempts = 3;
  115 + private Integer maxReconnectAttempts = DEFAULT_MAX_RECONNECT_ATTEMPTS;
71 116  
72 117 /**
73 118 * 是否启用压缩
74 119 */
75   - private Boolean enableCompression = false;
  120 + private Boolean enableCompression = DEFAULT_ENABLE_COMPRESSION;
76 121  
77 122 /**
78 123 * 消息发送重试次数
79 124 */
80   - private Integer sendRetryCount = 1;
  125 + private Integer sendRetryCount = DEFAULT_SEND_RETRY_COUNT;
81 126  
82 127 /**
83 128 * 消息发送重试间隔(毫秒)
84 129 */
85   - private Long sendRetryIntervalMs = 1000L;
  130 + private Long sendRetryIntervalMs = DEFAULT_SEND_RETRY_INTERVAL_MS;
86 131  
87 132 }
88 133 \ No newline at end of file
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/enums/rule/IotDataSinkTypeEnum.java
... ... @@ -16,8 +16,8 @@ import java.util.Arrays;
16 16 public enum IotDataSinkTypeEnum implements ArrayValuable<Integer> {
17 17  
18 18 HTTP(1, "HTTP"),
19   - TCP(2, "TCP"), // TODO @puhui999:待实现;
20   - WEBSOCKET(3, "WebSocket"), // TODO @puhui999:待实现;
  19 + TCP(2, "TCP"),
  20 + WEBSOCKET(3, "WebSocket"),
21 21  
22 22 MQTT(10, "MQTT"), // TODO 待实现;
23 23  
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/data/action/IotTcpDataRuleAction.java
... ... @@ -7,8 +7,6 @@ import cn.iocoder.yudao.module.iot.service.rule.data.action.tcp.IotTcpClient;
7 7 import lombok.extern.slf4j.Slf4j;
8 8 import org.springframework.stereotype.Component;
9 9  
10   -import java.time.Duration;
11   -
12 10 /**
13 11 * TCP 的 {@link IotDataRuleAction} 实现类
14 12 * <p>
... ... @@ -23,9 +21,6 @@ import java.time.Duration;
23 21 public class IotTcpDataRuleAction extends
24 22 IotDataRuleCacheableAction<IotDataSinkTcpConfig, IotTcpClient> {
25 23  
26   - private static final Duration CONNECT_TIMEOUT = Duration.ofSeconds(5);
27   - private static final Duration SEND_TIMEOUT = Duration.ofSeconds(10);
28   -
29 24 @Override
30 25 public Integer getType() {
31 26 return IotDataSinkTypeEnum.TCP.getType();
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/rule/data/action/websocket/IotWebSocketClient.java
... ... @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.iot.service.rule.data.action.websocket;
2 2  
3 3 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
4 4 import cn.iocoder.yudao.module.iot.core.mq.message.IotDeviceMessage;
  5 +import cn.iocoder.yudao.module.iot.dal.dataobject.rule.config.IotDataSinkWebSocketConfig;
5 6 import lombok.extern.slf4j.Slf4j;
6 7  
7 8 import java.net.URI;
... ... @@ -36,9 +37,9 @@ public class IotWebSocketClient implements WebSocket.Listener {
36 37  
37 38 public IotWebSocketClient(String serverUrl, Integer connectTimeoutMs, Integer sendTimeoutMs, String dataFormat) {
38 39 this.serverUrl = serverUrl;
39   - this.connectTimeoutMs = connectTimeoutMs != null ? connectTimeoutMs : 5000;
40   - this.sendTimeoutMs = sendTimeoutMs != null ? sendTimeoutMs : 10000;
41   - this.dataFormat = dataFormat != null ? dataFormat : "JSON";
  40 + this.connectTimeoutMs = connectTimeoutMs != null ? connectTimeoutMs : IotDataSinkWebSocketConfig.DEFAULT_CONNECT_TIMEOUT_MS;
  41 + this.sendTimeoutMs = sendTimeoutMs != null ? sendTimeoutMs : IotDataSinkWebSocketConfig.DEFAULT_SEND_TIMEOUT_MS;
  42 + this.dataFormat = dataFormat != null ? dataFormat : IotDataSinkWebSocketConfig.DEFAULT_DATA_FORMAT;
42 43 }
43 44  
44 45 /**
... ... @@ -113,7 +114,7 @@ public class IotWebSocketClient implements WebSocket.Listener {
113 114  
114 115 try {
115 116 String messageData;
116   - if ("JSON".equalsIgnoreCase(dataFormat)) {
  117 + if (IotDataSinkWebSocketConfig.DEFAULT_DATA_FORMAT.equalsIgnoreCase(dataFormat)) {
117 118 messageData = JsonUtils.toJsonString(message);
118 119 } else {
119 120 messageData = message.toString();
... ...