review:【IoT 物联网】http、emqx 的实现

This commit is contained in:
YunaiV
2025-07-05 20:44:43 +08:00
parent def9ff11dd
commit 815f38436c
4 changed files with 28 additions and 2 deletions

View File

@@ -98,6 +98,21 @@ public class IotGatewayProperties {
*/
private Integer serverPort;
/**
* 是否开启 SSL
*/
@NotNull(message = "是否开启 SSL 不能为空")
private Boolean sslEnabled = false;
/**
* SSL 证书路径
*/
private String sslKeyPath;
/**
* SSL 证书路径
*/
private String sslCertPath;
}
@Data

View File

@@ -70,6 +70,7 @@ public class IotEmqxAuthEventProtocol {
IotEmqxAuthEventHandler handler = new IotEmqxAuthEventHandler(serverId);
router.post(IotMqttTopicUtils.MQTT_AUTH_PATH).handler(handler::handleAuth);
router.post(IotMqttTopicUtils.MQTT_EVENT_PATH).handler(handler::handleEvent);
// TODO @haohao/mqtt/acl 需要处理么?
// 3. 启动 HTTP 服务器
try {

View File

@@ -127,6 +127,7 @@ public class IotEmqxUpstreamProtocol {
// 1. 连接 MQTT Broker
CountDownLatch latch = new CountDownLatch(1);
AtomicBoolean success = new AtomicBoolean(false);
// TODO @haohao要不要加 MqttClientOptions 参数1setCleanSession true2setMaxInflightQueue 100003setKeepAliveInterval 604setSsl/setTrustAll
mqttClient.connect(port, host, connectResult -> {
if (connectResult.succeeded()) {
log.info("[connectMqttSync][MQTT 客户端连接成功, host: {}, port: {}]", host, port);

View File

@@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.iot.gateway.protocol.http.router.IotHttpUpstreamH
import io.vertx.core.AbstractVerticle;
import io.vertx.core.Vertx;
import io.vertx.core.http.HttpServer;
import io.vertx.core.http.HttpServerOptions;
import io.vertx.core.net.PemKeyCertOptions;
import io.vertx.ext.web.Router;
import io.vertx.ext.web.handler.BodyHandler;
import jakarta.annotation.PostConstruct;
@@ -49,10 +51,17 @@ public class IotHttpUpstreamProtocol extends AbstractVerticle {
router.post(IotHttpUpstreamHandler.PATH).handler(upstreamHandler);
// 启动 HTTP 服务器
HttpServerOptions options = new HttpServerOptions()
.setPort(httpProperties.getServerPort());
if (Boolean.TRUE.equals(httpProperties.getSslEnabled())) {
PemKeyCertOptions pemKeyCertOptions = new PemKeyCertOptions().setKeyPath(httpProperties.getSslKeyPath())
.setCertPath(httpProperties.getSslCertPath());
options = options.setSsl(true).setKeyCertOptions(pemKeyCertOptions);
}
try {
httpServer = vertx.createHttpServer()
httpServer = vertx.createHttpServer(options)
.requestHandler(router)
.listen(httpProperties.getServerPort())
.listen()
.result();
log.info("[start][IoT 网关 HTTP 协议启动成功,端口:{}]", httpProperties.getServerPort());
} catch (Exception e) {