// CommunicationManager.h #pragma once #include "channelConfig.h" #include "httpChannel.h" #include "webSocketChannel.h" #include #include #include "export.hpp" class DIAGRAM_DESIGNER_PUBLIC CommunicationManager : public QObject { Q_OBJECT public: static CommunicationManager* instance(); // 初始化 bool initialize(); // HTTP通道操作 bool connectHttp(); bool disconnectHttp(); bool sendHttpRequest(const QString& path, const QByteArray& data = QByteArray(), const QString& method = "GET", const QVariantMap& query = QVariantMap()); // WebSocket通道操作 bool connectWebSocket(const QString& sessionId = ""); bool disconnectWebSocket(const QString& sessionId = ""); bool removeChannel(const QString& sessionId); bool sendWebSocketMessage(const QByteArray& data,const QString& sessionId); bool sendWebSocketText(const QString& text,const QString& sessionId); // 状态查询 bool isHttpConnected() const; bool isWebSocketConnected(const QString& sessionId) const; ChannelConfig getHttpConfig() const; ChannelConfig getWebSocketConfig() const; // 配置更新 void updateHttpConfig(const ChannelConfig& config); void updateWebSocketConfig(const ChannelConfig& config,const QString& sessionId = ""); signals: // HTTP通道信号 void httpConnected(); void httpDisconnected(); void httpDataReceived(const QByteArray& data); void httpError(const QString& error); // WebSocket通道信号 void websocketConnected(); void websocketDisconnected(); void websocketDataReceived(const QByteArray& data); void websocketTextReceived(const QString& text); void websocketError(const QString& error); private: CommunicationManager(QObject* parent = nullptr); ~CommunicationManager(); // 内部初始化 void initHttpChannel(); void initWebSocketChannel(QString sessionId = ""); //服务器回传的会话id // 配置 ChannelConfig m_httpConfig; ChannelConfig m_websocketConfig; // 通道实例 QSharedPointer m_httpChannel; QMap> m_websocketChannelMap; // };