客戶端
QWebSocket(const QString &origin = QString(),QWebSocketProtocol::Version version = QWebSocketProtocol::VersionLatest, QObject *parent = Q_NULLPTR)
virtual ~QWebSocket()
void abort()
QWebSocketProtocol::CloseCode closeCode() const
QString closeReason() const
QAbstractSocket::SocketError error() const
QString errorString() const
bool flush()
void ignoreSslErrors(const QList<QSslError> &errors)
bool isValid() const
QHostAddress localAddress() const
quint16 localPort() const
const QMaskGenerator *maskGenerator() const
QString origin() const
QAbstractSocket::PauseModes pauseMode() const
QHostAddress peerAddress() const
QString peerName() const
quint16 peerPort() const
QNetworkProxy proxy() const
qint64 readBufferSize() const
QNetworkRequest request() const
QUrl requestUrl() const
QString resourceName() const
void resume()
qint64 sendBinaryMessage(const QByteArray &data)
qint64 sendTextMessage(const QString &message)
void setMaskGenerator(const QMaskGenerator *maskGenerator)
void setPauseMode(QAbstractSocket::PauseModes pauseMode)
void setProxy(const QNetworkProxy &networkProxy)
void setReadBufferSize(qint64 size)
void setSslConfiguration(const QSslConfiguration &sslConfiguration)
QSslConfiguration sslConfiguration() const
QAbstractSocket::SocketState state() const
QWebSocketProtocol::Version version() const
void close(QWebSocketProtocol::CloseCode closeCode = QWebSocketProtocol::CloseCodeNormal, const QString &reason = QString())
void ignoreSslErrors()
void open(const QUrl &url)
void open(const QNetworkRequest &request)
void ping(const QByteArray &payload = QByteArray())
void aboutToClose()
void binaryFrameReceived(const QByteArray &frame, bool isLastFrame)
void binaryMessageReceived(const QByteArray &message)
void bytesWritten(qint64 bytes)
void connected()
void disconnected()
void error(QAbstractSocket::SocketError error)
void pong(quint64 elapsedTime, const QByteArray &payload)
void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator)
void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
void readChannelFinished()
void sslErrors(const QList<QSslError> &errors)
void stateChanged(QAbstractSocket::SocketState state)
void textFrameReceived(const QString &frame, bool isLastFrame)
void textMessageReceived(const QString &message)
客戶端
Header: #include<QWebSocket> qmake: QT += websockets Inherits: QObject
QWebSocket(const QString &origin = QString(),QWebSocketProtocol::Version version = QWebSocketProtocol::VersionLatest, QObject *parent = Q_NULLPTR)
構造函數web
virtual ~QWebSocket()
銷燬當前 QWebSocket
,若是該 socket 處於打開狀態,則關閉它,並釋放用戶資源。安全
void abort()
停止當前套接字並重置套接字。 與close()不一樣,此函數當即關閉套接字,放棄寫入緩衝區中的任何未決數據。服務器
QWebSocketProtocol::CloseCode closeCode() const
返回指示套接字被關閉的緣由的代碼。websocket
QString closeReason() const
返回套接字被關閉的緣由。網絡
QAbstractSocket::SocketError error() const
返回上次發生的錯誤類型app
QString errorString() const
返回發生的最後一個錯誤的可讀描述socket
bool flush()
此功能儘量地從內部寫入緩衝區寫入底層網絡套接字,而不會阻塞。 若是有任何數據被寫入,則該函數返回true; 不然返回false。 若是您須要QWebSocket當即開始發送緩衝數據,請調用此函數。 成功寫入的字節數取決於操做系統。 在大多數狀況下,您不須要調用此函數,由於一旦控制回到事件循環,QWebSocket就會自動開始發送數據。函數
void ignoreSslErrors(const QList<QSslError> &errors)
這是一個過載功能。
此方法告訴QWebSocket忽略錯誤中給出的錯誤。
請注意,您能夠在SSL錯誤中設置預期證書:例如,若是要鏈接到使用自簽名證書的服務器,請考慮如下代碼片斷:ui
QList<QSslCertificate> cert = QSslCertificate::fromPath(QLatin1String("server-certificate.pem")); QSslError error(QSslError::SelfSignedCertificate, cert.at(0)); QList<QSslError> expectedSslErrors; expectedSslErrors.append(error); QWebSocket socket; socket.ignoreSslErrors(expectedSslErrors); socket.open(QUrl(QStringLiteral("wss://myserver.at.home")));
屢次調用此函數將替換以前調用中傳遞的錯誤列表。 經過使用空列表調用此函數,能夠清除要忽略的錯誤列表。加密
bool isValid() const
若是套接字準備好讀取和寫入,則返回true; 不然返回false。
QHostAddress localAddress() const
返回本地地址
quint16 localPort() const
返回本地端口
const QMaskGenerator *maskGenerator() const
返回此QWebSocket當前使用的掩碼生成器。
QString origin() const
返回當前的原點。
QAbstractSocket::PauseModes pauseMode() const
返回此套接字的暫停模式
QHostAddress peerAddress() const
返回對等地址
QString peerName() const
返回peerName
quint16 peerPort() const
返回peerport
QNetworkProxy proxy() const
返回當前配置的代理
qint64 readBufferSize() const
返回套接字使用的讀取緩衝區的大小(以字節爲單位)。
QNetworkRequest request() const
返回已經或將要用於打開此套接字的請求。
QUrl requestUrl() const
返回套接字鏈接或將鏈接到的url。
QString resourceName() const
返回當前訪問的資源的名稱。
void resume()
繼續在套接字上傳輸數據。 只有在套接字已設置爲暫停通知並收到通知後才能使用此方法。 目前支持的惟一通知是sslErrors()。 若是套接字未暫停,則調用此方法會致使未定義的行爲。
qint64 sendBinaryMessage(const QByteArray &data)
將給定的數據做爲二進制消息經過套接字發送,並返回實際發送的字節數。
qint64 sendTextMessage(const QString &message)
將給定的消息做爲文本消息經過套接字發送,並返回實際發送的字節數。
void setMaskGenerator(const QMaskGenerator *maskGenerator)
將生成器設置爲用於建立掩碼以生成掩碼生成器。 默認的QWebSocket生成器能夠經過提供Q_NULLPTR來重置。 即便在鏈接打開的狀況下,掩碼發生器也能夠隨時更改。
void setPauseMode(QAbstractSocket::PauseModes pauseMode)
控制是否在收到通知後暫停。 pauseMode參數指定套接字應該暫停的條件。
目前支持的惟一通知是sslErrors()。 若是設置爲PauseOnSslErrors,套接字上的數據傳輸將暫停,須要經過調用resume()再次顯式啓用。 默認狀況下,該選項設置爲PauseNever。 在鏈接到服務器以前必須調用此選項,不然會致使未定義的行爲。
void setProxy(const QNetworkProxy &networkProxy)
將代理設置爲networkProxy
void setReadBufferSize(qint64 size)
將QWebSocket內部讀取緩衝區的大小設置爲大小字節。
若是緩衝區大小限制在必定的大小,QWebSocket將不會緩衝超過這個大小的數據。 例外狀況下,緩衝區大小爲0表示讀取緩衝區不受限制,而且全部傳入數據都被緩衝。 這是默認設置。 若是您僅在特定時間點(例如,在實時流應用程序中)讀取數據,或者您想保護套接字免於接收太多數據,這可能最終會致使應用程序用完 的記憶。
void setSslConfiguration(const QSslConfiguration &sslConfiguration)
將套接字的SSL配置設置爲sslConfiguration的內容。
該函數將本地證書,密碼,私鑰和CA證書設置爲存儲在sslConfiguration中的證書。 沒法設置與SSL狀態相關的字段。
QSslConfiguration sslConfiguration() const
返回套接字的SSL配置狀態。 套接字的默認SSL配置是使用默認密碼,默認CA證書,無本地私鑰或證書。 SSL配置還包含可隨時更改的字段,恕不另行通知。
QAbstractSocket::SocketState state() const
返回套接字的當前狀態。
QWebSocketProtocol::Version version() const
返回套接字當前使用的版本。
32 public functions inherited from QObject
void close(QWebSocketProtocol::CloseCode closeCode = QWebSocketProtocol::CloseCodeNormal, const QString &reason = QString())
用給定的closeCode和緣由合適地關閉套接字。
寫入緩衝區中的任何數據在套接字關閉前被刷新。 closeCode是一個表示關閉緣由的QWebSocketProtocol :: CloseCode,理由更詳細地描述了關閉的緣由
void ignoreSslErrors()
這個插槽告訴QWebSocket在QWebSocket握手階段忽略錯誤並繼續鏈接。 若是即便在握手階段發生錯誤時仍要繼續鏈接,則必須從鏈接到sslErrors()的插槽調用此插槽,或者在握手階段以前調用此插槽。 若是您不調用此插槽,不管是對錯誤仍是握手以前,都會在sslErrors()信號發出後斷開鏈接。
警告:務必始終讓用戶檢查由sslErrors()信號報告的錯誤,而且僅在用戶確認進行的操做正常後才調用此方法。 若是有意外的錯誤,鏈接應該停止。 在不檢查實際錯誤的狀況下調用此方法極可能會對您的應用程序形成安全風險。 當心使用它!
void open(const QUrl &url)
使用給定的URL打開WebSocket鏈接。
若是url包含換行符( r n),那麼錯誤信號將做爲錯誤類型與QAbstractSocket :: ConnectionRefusedError一塊兒發出。
void open(const QNetworkRequest &request)
使用給定請求打開WebSocket鏈接。
請求URL將用於打開WebSocket鏈接。 請求中出現的標題將在升級請求中發送到服務器,以及websocket握手所需的標題。
void ping(const QByteArray &payload = QByteArray())
ping服務器以代表鏈接仍然存在。 額外的有效載荷能夠沿着ping消息發送。
有效載荷的大小不能大於125.若是它更大,有效載荷將被限制爲125字節。
1 public slot inherited from QObject
void aboutToClose()
這個信號在插座即將關閉時發出。 若是您在套接字關閉以前執行了須要執行的操做(例如,若是數據位於須要寫入設備的單獨緩衝區中),請鏈接此信號。
void binaryFrameReceived(const QByteArray &frame, bool isLastFrame)
不管什麼時候收到二進制幀,都會發出此信號。 該幀包含數據,isLastFrame指示這是不是完整消息的最後一幀。
該信號可用於逐幀處理較大的消息,而不是等待完整的消息到達。
void binaryMessageReceived(const QByteArray &message)
只要接收到二進制消息,就會發出此信號。 該消息包含接收到的字節。
void bytesWritten(qint64 bytes)
每當數據有效載荷被寫入插座時,就會發出此信號。 bytes參數設置爲寫入此有效內容中的字節數。
注意:這個信號對於安全和非安全的WebSocket都具備相同的含義。 與QSslSocket相反,bytesWritten()僅在有效寫入加密數據時纔會發出(請參閱QSslSocket :: encryptedBytesWritten())。
void connected()
鏈接成功創建時發射。 鏈接套接字並握手成功後,鏈接成功創建。
void disconnected()
插座斷開時發射。
void error(QAbstractSocket::SocketError error)
該信號在發生錯誤後發出。 錯誤參數描述發生的錯誤類型。
QAbstractSocket :: SocketError不是已註冊的元類型,所以對於排隊鏈接,您必須使用Q_DECLARE_METATYPE()和qRegisterMetaType()進行註冊。
注意:此類中的信號錯誤超載。 要使用函數指針語法鏈接到此函數,您必須在靜態轉換中指定信號類型,以下例所示:
connect(webSocket, static_cast<void(QWebSocket::*)(QAbstractSocket::SocketError)>(&QWebSocket::error), [=](QAbstractSocket::SocketError error){ /* ... */ });
void pong(quint64 elapsedTime, const QByteArray &payload)
當收到pong消息以回覆先前的ping時發出。 elapsedTime包含往返時間(以毫秒爲單位),而且有效內容包含與ping一塊兒發送的可選有效內容。
void preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator)
若是SSL / TLS握手協商PSK密碼組,則會發出此信號,所以須要PSK身份驗證。
當使用PSK時,客戶端必須向服務器發送一個有效的標識和一個有效的預共享密鑰,以便SSL握手繼續進行。 應用程序能夠在鏈接到此信號的插槽中提供此信息,方法是根據須要填寫已傳遞的身份驗證器對象。
注意:忽略此信號或未能提供所需的憑據將致使握手失敗,從而致使鏈接停止。
注意:驗證器對象由websocket擁有,不能被應用程序刪除。
void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
當使用須要驗證的代理服務器時,能夠發出此信號。 而後可使用所需的詳細信息填充驗證器對象,以容許驗證並繼續鏈接。
注意:沒法使用QueuedConnection鏈接到此信號,由於若是驗證器在信號返回時還沒有用新信息填充驗證器,則鏈接將失敗。
void readChannelFinished()
輸入(讀取)流在此設備中關閉時發出此信號。 一旦檢測到關閉,它就會被釋放。
void sslErrors(const QList<QSslError> &errors)
QWebSocket在SSL握手以後發出此信號以指示在創建對等體的身份時發生了一個或多個錯誤。 這些錯誤一般代表QWebSocket沒法安全地識別對等體。 除非採起任何措施,不然在發出此信號後,鏈接將被丟棄。 若是你想繼續鏈接,儘管發生了錯誤,你必須在鏈接到這個信號的槽中調用QWebSocket :: ignoreSslErrors()。 若是稍後須要訪問錯誤列表,則能夠調用sslErrors()(不帶參數)。
錯誤包含一個或多個阻止QWebSocket驗證對等身份的錯誤。
注意:鏈接到此信號時不能使用Qt :: QueuedConnection,或者調用QWebSocket :: ignoreSslErrors()將不起做用。
void stateChanged(QAbstractSocket::SocketState state)
不管什麼時候QWebSocket的狀態改變,都會發出此信號。 狀態參數是新狀態。
注意:QAbstractSocket :: ConnectedState是在與服務器握手成功後發出的。
QAbstractSocket :: SocketState不是已註冊的元類型,所以對於排隊鏈接,您必須使用Q_REGISTER_METATYPE()和qRegisterMetaType()進行註冊。
void textFrameReceived(const QString &frame, bool isLastFrame)
只要接收到文本幀,就會發出此信號。 該幀包含數據,isLastFrame指示這是不是完整消息的最後一幀。
該信號可用於逐幀處理較大的消息,而不是等待完整的消息到達。
void textMessageReceived(const QString &message)
只要收到短信,就會發出此信號。 該消息包含收到的文本。
2 signals inherited from QObject
1 property inherited from QObject
1 public variable inherited from QObject
10 static public members inherited from QObject
9 protected functions inherited from QObject
2 protected variables inherited from QObject