Skip to content
Snippets Groups Projects
websocketserver.h 1.1 KiB
Newer Older
akiraohgaki's avatar
akiraohgaki committed
#pragma once

#include <QObject>
akiraohgaki's avatar
akiraohgaki committed
#include <QUrl>
akiraohgaki's avatar
akiraohgaki committed
//#include <QJsonObject>
akiraohgaki's avatar
akiraohgaki committed

class QWebSocketServer;
akiraohgaki's avatar
akiraohgaki committed
class QWebSocket;
akiraohgaki's avatar
akiraohgaki committed
class ConfigHandler;
class SystemHandler;
class OcsHandler;
class ItemHandler;

akiraohgaki's avatar
akiraohgaki committed
class WebSocketServer : public QObject
{
    Q_OBJECT

public:
akiraohgaki's avatar
akiraohgaki committed
    explicit WebSocketServer(ConfigHandler *configHandler, const QString &serverName = "WebSocketServer", quint16 serverPort = 0, QObject *parent = 0);
akiraohgaki's avatar
akiraohgaki committed
    ~WebSocketServer();

akiraohgaki's avatar
akiraohgaki committed
signals:
    void started();
    void stopped();

public slots:
akiraohgaki's avatar
akiraohgaki committed
    bool start();
    void stop();
akiraohgaki's avatar
akiraohgaki committed
    bool isError();
    QString errorString();
    QUrl serverUrl();

akiraohgaki's avatar
akiraohgaki committed
private slots:
    void wsNewConnection();
    void wsDisconnected();
akiraohgaki's avatar
akiraohgaki committed
    void wsTextMessageReceived(const QString &message);
    void wsBinaryMessageReceived(const QByteArray &message);
akiraohgaki's avatar
akiraohgaki committed

akiraohgaki's avatar
akiraohgaki committed
private:
akiraohgaki's avatar
akiraohgaki committed
    void callFunction(const QJsonObject &request, QWebSocket *wsClient);

akiraohgaki's avatar
akiraohgaki committed
    QString serverName_;
    quint16 serverPort_;
akiraohgaki's avatar
akiraohgaki committed
    QWebSocketServer *wsServer_;
    QList<QWebSocket *> wsClients_;
akiraohgaki's avatar
akiraohgaki committed

    ConfigHandler *configHandler_;
    SystemHandler *systemHandler_;
    OcsHandler *ocsHandler_;
    ItemHandler *itemHandler_;