#pragma once #include "aopacket.h" #include "ext_packet.h" #include "serverinfo.h" #include #include class AOApplication; class WebSocketConnection : public QObject { Q_OBJECT public: explicit WebSocketConnection(AOApplication *ao_app, QObject *parent = nullptr); virtual ~WebSocketConnection(); bool isConnected(); void connectToServer(const ServerInfo &server); void disconnectFromServer(); void sendPacket(AOPacket packet); void sendExMessage(const QByteArray &msg); Q_SIGNALS: void connectedToServer(); void disconnectedFromServer(); void errorOccurred(QString error); void receivedPacket(AOPacket packet); void receivedExMessage(QByteArray msg); private: AOApplication *ao_app; QWebSocket *m_socket; QAbstractSocket::SocketState m_last_state; private Q_SLOTS: void onError(); void onStateChanged(QAbstractSocket::SocketState state); void onTextMessageReceived(QString message); void onBinaryMessageReceived(QByteArray message); };