QWebSocket 客户端

QWebSocket 客户端

Header: #include<QWebSocket>
qmake: QT += websockets
Inherits: QObject

Public Function

QWebSocket(const QString &origin = QString(),QWebSocketProtocol::Version version = QWebSocketProtocol::VersionLatest, QObject *parent = Q_NULLPTR)

构造函数

virtual ~QWebSocket()

销毁当前 QWebSocket,如果该 socket 处于打开状态,则关闭它,并释放用户资源。

void abort()

中止当前套接字并重置套接字。 与close()不同,此函数立即关闭套接字,放弃写入缓冲区中的任何未决数据。

QWebSocketProtocol::CloseCode closeCode() const

返回指示套接字被关闭的原因的代码。

QString closeReason() const

返回套接字被关闭的原因。

QAbstractSocket::SocketError error() const

返回上次发生的错误类型

QString errorString() const

返回发生的最后一个错误的可读描述

bool flush()

此功能尽可能地从内部写入缓冲区写入底层网络套接字,而不会阻塞。 如果有任何数据被写入,则该函数返回true; 否则返回false。 如果您需要QWebSocket立即开始发送缓冲数据,请调用此函数。 成功写入的字节数取决于操作系统。 在大多数情况下,您不需要调用此函数,因为一旦控制回到事件循环,QWebSocket就会自动开始发送数据。

void ignoreSslErrors(const QList<QSslError> &errors)

这是一个过载功能。
此方法告诉QWebSocket忽略错误中给出的错误。
请注意,您可以在SSL错误中设置预期证书:例如,如果要连接到使用自签名证书的服务器,请考虑以下代码片段:

  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

Pubilc Slots

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

Signals

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

ditional Inherited Members

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

Detailed Description

原文地址:https://www.cnblogs.com/cheungxiongwei/p/8496606.html