mqttBrokerController.js 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.MqttBrokerController = void 0;
  4. const mqttBrokerService_1 = require("../services/mqttBrokerService");
  5. class MqttBrokerController {
  6. static async getStatus(req, res) {
  7. try {
  8. const broker = mqttBrokerService_1.MqttBrokerService.getInstance();
  9. const clients = broker.getConnectedClients();
  10. res.json({
  11. success: true,
  12. data: {
  13. running: true,
  14. connectedClients: clients.length,
  15. port: parseInt(process.env.MQTT_BROKER_PORT || '1883', 10),
  16. allowAnonymous: process.env.MQTT_ALLOW_ANONYMOUS === 'true'
  17. }
  18. });
  19. }
  20. catch (error) {
  21. res.status(500).json({
  22. success: false,
  23. message: error.message || '获取Broker状态失败'
  24. });
  25. }
  26. }
  27. static async getConnectedClients(req, res) {
  28. try {
  29. const broker = mqttBrokerService_1.MqttBrokerService.getInstance();
  30. const clients = broker.getConnectedClients();
  31. res.json({
  32. success: true,
  33. data: clients
  34. });
  35. }
  36. catch (error) {
  37. res.status(500).json({
  38. success: false,
  39. message: error.message || '获取连接客户端失败'
  40. });
  41. }
  42. }
  43. static async disconnectClient(req, res) {
  44. try {
  45. const clientId = req.params.clientId;
  46. const broker = mqttBrokerService_1.MqttBrokerService.getInstance();
  47. const result = broker.disconnectClient(clientId);
  48. if (result) {
  49. res.json({
  50. success: true,
  51. message: `客户端 ${clientId} 已断开连接`
  52. });
  53. }
  54. else {
  55. res.status(404).json({
  56. success: false,
  57. message: `客户端 ${clientId} 未找到`
  58. });
  59. }
  60. }
  61. catch (error) {
  62. res.status(500).json({
  63. success: false,
  64. message: error.message || '断开客户端失败'
  65. });
  66. }
  67. }
  68. static async publishMessage(req, res) {
  69. try {
  70. const { topic, payload, qos, retain } = req.body;
  71. if (!topic || payload === undefined) {
  72. res.status(400).json({
  73. success: false,
  74. message: '缺少必要参数: topic, payload'
  75. });
  76. return;
  77. }
  78. const broker = mqttBrokerService_1.MqttBrokerService.getInstance();
  79. await broker.publish(topic, typeof payload === 'object' ? JSON.stringify(payload) : String(payload), { qos: qos || 0, retain: retain || false });
  80. res.json({
  81. success: true,
  82. message: '消息发布成功'
  83. });
  84. }
  85. catch (error) {
  86. res.status(500).json({
  87. success: false,
  88. message: error.message || '发布消息失败'
  89. });
  90. }
  91. }
  92. }
  93. exports.MqttBrokerController = MqttBrokerController;
  94. //# sourceMappingURL=mqttBrokerController.js.map