客户端
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