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 #include <QNetworkProxy>
19 #include "qwebsocketsglobal.h"
20 #include "qwebsocketprotocol.h"
23 class QWebSocketPrivate;
25 class Q_WEBSOCKETS_EXPORT QWebSocket:public QObject
30 explicit QWebSocket(QString origin = QString(), QWebSocketProtocol::Version version = QWebSocketProtocol::V_LATEST, QObject *parent = 0);
31 virtual ~QWebSocket();
34 QAbstractSocket::SocketError error() const;
35 QString errorString() const;
38 QHostAddress localAddress() const;
39 quint16 localPort() const;
40 QHostAddress peerAddress() const;
41 QString peerName() const;
42 quint16 peerPort() const;
43 QNetworkProxy proxy() const;
44 qint64 readBufferSize() const;
45 void setProxy(const QNetworkProxy &networkProxy);
46 void setReadBufferSize(qint64 size);
47 void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value);
48 QVariant socketOption(QAbstractSocket::SocketOption option);
49 QAbstractSocket::SocketState state() const;
51 bool waitForConnected(int msecs = 30000);
52 bool waitForDisconnected(int msecs = 30000);
54 QWebSocketProtocol::Version version();
55 QString resourceName();
61 qint64 write(const char *message); //send data as text
62 qint64 write(const char *message, qint64 maxSize); //send data as text
63 qint64 write(const QString &message); //send data as text
64 qint64 write(const QByteArray &data); //send data as binary
67 virtual void close(QWebSocketProtocol::CloseCode closeCode = QWebSocketProtocol::CC_NORMAL, QString reason = QString());
68 virtual void open(const QUrl &url, bool mask = true);
75 void stateChanged(QAbstractSocket::SocketState state);
76 void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *pAuthenticator);
77 void readChannelFinished();
78 void textFrameReceived(QString frame, bool isLastFrame);
79 void binaryFrameReceived(QByteArray frame, bool isLastFrame);
80 void textMessageReceived(QString message);
81 void binaryMessageReceived(QByteArray message);
82 void error(QAbstractSocket::SocketError error);
83 void pong(quint64 elapsedTime);
86 Q_DISABLE_COPY(QWebSocket)
87 QWebSocket(QTcpSocket *pTcpSocket, QWebSocketProtocol::Version version, QObject *parent = 0);
88 QWebSocketPrivate * const d_ptr;
90 friend class QWebSocketPrivate;
93 #endif // QWEBSOCKET_H