QWebSocket 客户端通信

QWebSocket 客户端通信

WebSocket 是 HTML5 提供的一种在单个TCP连接上进行全双工通讯的协议。

WebSocket 是的客户端和服务器之间的数据交换变得更加简单,允许服务器端主动向客户端推送数据。在WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

WebSocket 实例

WebSocket 协议本质上是一个基于 TCP 的协议。

为了建立一个 WebSocket连接,客户端浏览器首先要向服务器发起一个 HTTP 请求,这个请求和通常的 HTTP 请求不同,包含了一些附加头信息“Upgrade:WebSocket”表明这是一个申请协议升级的HTTP请求,服务器解析这些附加的头信息然后会产生应答信息返回给客户端,客户端和服务器的WebSocket 连接就建立起来了,爽饭就可以通过这个连接通道自由的传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连接。

ps: 想抓个包出来,半天,没抓一个。

#include "echoclient.h"

EchoClient::EchoClient(const QUrl & url, QObject * parent):
    QObject(parent),
    m_url(url)
{
    qDebug() << "WebSocket server:" << url;

    connect(&m_webSocket, &QWebSocket::connected, this, &EchoClient::onConnected);//当socket 连接建立后触发的槽函数
    connect(&m_webSocket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(ConnectRefusedError(QAbstractSocket::SocketError)));//当socket出现问题时,触发对应的槽函数

    m_webSocket.open(QUrl(url));//建立连接,open 的返回类型为void
}

void EchoClient::onConnected()
{
    qDebug() <<"WebSocket connected";

    connect(&m_webSocket, &QWebSocket::textMessageReceived,
            this, &EchoClient::onTextMessageReceived);

    m_webSocket.sendTextMessage(QStringLiteral("Hello, World!"));
}

void EchoClient::onTextMessageReceived(QString message)
{
    qDebug() << "Message received:" << message;

//    m_webSocket.close();
}


void EchoClient::ConnectRefusedError(QAbstractSocket::SocketError error)
{
    qDebug() << error << m_webSocket.errorString() << "嘤嘤婴";//连接错误的原因
    m_webSocket.close();//先关闭
    m_webSocket.open(QUrl(m_url));//再打开进行连接
}

链接:https://www.runoob.com/html/html5-websocket.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值