aboutsummaryrefslogtreecommitdiff
path: root/src/network/websocketconnection.h
blob: 1f5a842b0775eae56400e219fda0dae0b8b82676 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#pragma once

#include "aopacket.h"
#include "ext_packet.h"
#include "serverinfo.h"

#include <QObject>
#include <QWebSocket>

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);
};