QWebSocket 客户端
- QWebSocket
客户端
- Public Function
-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
- Pubilc Slots
-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())
- Signals
-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)
- ditional Inherited Members - Detailed Description
- Public Function
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
QWebSocket 客户端的更多相关文章
- 【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付
前言 最近有点空余时间,所以,就研究了一下APP支付.前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究.然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还 ...
- 支持 .NET Core 的 Memcached 客户端 EnyimMemcachedCore
1. 介绍 EnyimMemcachedCore 是一个支持 .NET Core 的 Memcached 客户端,是从 EnyimMemcached 迁移至 .NET Core的,源代码托管在 Git ...
- 消息队列 Kafka 的基本知识及 .NET Core 客户端
前言 最新项目中要用到消息队列来做消息的传输,之所以选着 Kafka 是因为要配合其他 java 项目中,所以就对 Kafka 了解了一下,也算是做个笔记吧. 本篇不谈论 Kafka 和其他的一些消息 ...
- Socket聊天程序——客户端
写在前面: 上周末抽点时间把自己写的一个简单Socket聊天程序的初始设计和服务端细化设计记录了一下,周二终于等来毕业前考的软考证书,然后接下来就是在加班的日子度过了,今天正好周五,打算把客户端的详细 ...
- 无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查。。。
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Ser ...
- zookeeper源码分析之三客户端发送请求流程
znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的 ...
- zookeeper源码分析之二客户端启动
ZooKeeper Client Library提供了丰富直观的API供用户程序使用,下面是一些常用的API: create(path, data, flags): 创建一个ZNode, path是其 ...
- PHP获取客户端IP
/** * 获取客户端IP */ function getClientIp() { $ip = 'unknown'; $unknown = 'unknown'; if (isset($_SERVER[ ...
- 搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 (1)
搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 原文地址(英文):http://www.networkcomms.net/creating ...
随机推荐
- 小打卡PRD
目标:打造一款不同于市场上的公开打卡app的产品 理念:通过监督和鼓励,和相同圈子的人一起互相鼓励.分享及监督,共同进步. 优点: 模板消息通知,网上基本通过小程序中逻辑层JS完成推送的请求,小打卡在 ...
- Node.js之单利模式
在iOS中我们经常用到单利模式,这样就能够实现在多处共享同一数据,那么在Node.js中也存在这种模式. 我们知道,Node.js中模块的概念很重要,在写模块的接口的时候,只需要暴露出一个实例对象就能 ...
- junit4X系列--Exception
原文出处:http://www.blogjava.net/DLevin/archive/2012/11/02/390684.html.感谢作者的无私分享. 说来惭愧,虽然之前已经看过JUnit的源码了 ...
- Linux指令--ifconfig
许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...
- Servlet--HttpServletResponse的2个操作流的方法
前面已经说过无数多次了,我们的项目都是基于HTTP协议的一次请求,一次响应.实际编码中,我们在处理完逻辑后一般是跳转到一个页面上,或者用输出流返回json字符串.其实跳转到一个页面往往也就是JSP,J ...
- android adapter 中添加OnClickListener事件
public class SearchAutoAdapter extends BaseAdapter { private OnClickListener mOnClickListener; publi ...
- 【php】phpExcel使用教程,如何导出excel表格
[1]下载phpExcel类文件 可在官方去下载 我们只需要classes中的文件,把Classes文件复制到项目中 只需要2个文件就可以了 一个就是phpExcel(刚才我们复制过来的文件 Cla ...
- mvn 手动安装jar 到本地库
安装: mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.1.0.7.0 -Dpackagi ...
- [DeeplearningAI笔记]神经网络与深度学习4.深度神经网络
觉得有用的话,欢迎一起讨论相互学习~Follow Me 4.2 深层神经网络中的前向传播 4.3 核对矩阵的维数 经验方法论 对于神经网络想增加得到没有bug的程序的概率的方法:需要仔细的思考矩阵的维 ...
- spring-boot 使用 main函数 无法启动的问题完美 解决方案。
首先 是启动之后 ,直接回exit code 0,网址 里面输入localhost:8080显示站点未启动.网上查 了多种 方式 ,日志 也 打了,都没发现问题,最后到这篇文章里 找到了答案.但是这 ...