-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathWebsocketServer.h
38 lines (36 loc) · 1.04 KB
/
WebsocketServer.h
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
#ifndef WEBSOCKETSERVER_H
#define WEBSOCKETSERVER_H
#include <QWebSocket>
#include <QWebSocketServer>
#include <QJsonValue>
#include <QTimer>
class WebsocketServer : public QWebSocketServer{
Q_OBJECT
struct WSSession{
QDateTime actTime; //上次活动时间
};
enum MsgType{Request,Response,Error};
public:
WebsocketServer(QObject* parent=0);
~WebsocketServer();
static WebsocketServer* instance();
bool registerObject(QString name,QObject* obj);
bool unregisterObject(QString name);
Q_INVOKABLE QJsonValue getAvaliableMethods();
Q_INVOKABLE QJsonValue multiCall(QJsonValue params);
signals:
void activeClientsChanged(int);
public slots:
void dropDiedSession();
private slots:
void newClientConnected();
void messageReceived(QString text);
void clientDisconnected();
private:
QJsonObject invokeMethod(QJsonObject reqObj);
static WebsocketServer* m_instance;
QTimer *timer;
QMap<QWebSocket*,WSSession> clients;
QMap<QString,QObject*> objMap;
};
#endif // WEBSOCKETSERVER_H