3 * @brief Defines the WebSocket class.
5 * \note Currently, only V13 (RFC6455) is supported.
6 * \note Both text and binary websockets are supported.
7 * \note The secure version (wss) is currently not implemented.
8 * @author Kurt Pattyn (pattyn.kurt@gmail.com)
15 #include <QAbstractSocket>
16 #include <QHostAddress>
17 #ifndef QT_NO_NETWORKPROXY
18 #include <QNetworkProxy>
21 #include "qwebsocketsglobal.h"
22 #include "qwebsocketprotocol.h"
27 class QWebSocketPrivate;
29 class Q_WEBSOCKETS_EXPORT QWebSocket:public QObject
34 explicit QWebSocket(QString origin = QString(), QWebSocketProtocol::Version version = QWebSocketProtocol::V_LATEST, QObject *parent = 0);
35 virtual ~QWebSocket();
38 QAbstractSocket::SocketError error() const;
39 QString errorString() const;
42 QHostAddress localAddress() const;
43 quint16 localPort() const;
44 QAbstractSocket::PauseModes pauseMode() const;
45 QHostAddress peerAddress() const;
46 QString peerName() const;
47 quint16 peerPort() const;
48 #ifndef QT_NO_NETWORKPROXY
49 QNetworkProxy proxy() const;
50 void setProxy(const QNetworkProxy &networkProxy);
52 qint64 readBufferSize() const;
53 void setReadBufferSize(qint64 size);
56 void setPauseMode(QAbstractSocket::PauseModes pauseMode);
58 void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value);
59 QVariant socketOption(QAbstractSocket::SocketOption option);
60 QAbstractSocket::SocketState state() const;
62 bool waitForConnected(int msecs = 30000);
63 bool waitForDisconnected(int msecs = 30000);
65 QWebSocketProtocol::Version version();
66 QString resourceName();
72 qint64 write(const char *message); //send data as text
73 qint64 write(const char *message, qint64 maxSize); //send data as text
74 qint64 write(const QString &message); //send data as text
75 qint64 write(const QByteArray &data); //send data as binary
78 virtual void close(QWebSocketProtocol::CloseCode closeCode = QWebSocketProtocol::CC_NORMAL, QString reason = QString());
79 virtual void open(const QUrl &url, bool mask = true);
86 void stateChanged(QAbstractSocket::SocketState state);
87 #ifndef QT_NO_NETWORKPROXY
88 void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *pAuthenticator);
90 void readChannelFinished();
91 void textFrameReceived(QString frame, bool isLastFrame);
92 void binaryFrameReceived(QByteArray frame, bool isLastFrame);
93 void textMessageReceived(QString message);
94 void binaryMessageReceived(QByteArray message);
95 void error(QAbstractSocket::SocketError error);
96 void pong(quint64 elapsedTime);
99 Q_DISABLE_COPY(QWebSocket)
100 QWebSocket(QTcpSocket *pTcpSocket, QWebSocketProtocol::Version version, QObject *parent = 0);
101 QWebSocketPrivate * const d_ptr;
103 friend class QWebSocketPrivate;
108 #endif // QWEBSOCKET_H