You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.0 KiB
C

4 years ago
#ifndef _H_SERVER_H_
#define _H_SERVER_H_
#include <QObject>
#include <QList>
#include <QByteArray>
#include <functional>
QT_FORWARD_DECLARE_CLASS(QWebSocketServer)
QT_FORWARD_DECLARE_CLASS(QWebSocket)
/*
webSocketServer ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>client<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD><EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
typedef std::function<void(QWebSocket*, QByteArray)> RecvFunc;
class WebServer : public QObject
{
Q_OBJECT
public:
WebServer(QObject *parent = nullptr);
~WebServer();
bool openServer(int port, RecvFunc func);
bool closeServer();
void sendData(const QByteArray data);
int getCount() const;
signals:
void sgConnected(bool bFlag); //<2F><><EFBFBD><EFBFBD>״̬ bflag true <20>򿪳ɹ<F2BFAAB3><C9B9><EFBFBD>false <20><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
void sgClientInfo(QString strIP, int port, bool bflag);
private:
Q_SLOT void onNewConnection();
Q_SLOT void processTextMessage(QString message);
Q_SLOT void processBinaryMessage(QByteArray message);
Q_SLOT void socketDisconnected();
Q_SLOT void closed();
private:
QWebSocketServer *m_pWebSocketServer{ nullptr };
QList<QWebSocket *> m_clients;
RecvFunc m_func;//<2F><><EFBFBD>ݽ<EFBFBD><DDBD>ջص<D5BB><D8B5><EFBFBD><EFBFBD><EFBFBD>
};
#endif