【QT进阶】Qt http编程之实现websocket client客户端

往期回顾

【QT进阶】Qt http编程之nlohmann json库使用的简单介绍-CSDN博客

【QT进阶】Qt http编程之websocket的简单介绍-CSDN博客

【QT进阶】Qt http编程之实现websocket server服务器端-CSDN博客

【QT进阶】Qt http编程之实现websocket client客户端

一、最终效果

通过给定服务器端的url,实现客户端连接服务器端

二、具体实现

1、代码思路

创建一个WebSocket客户端演示程序,通过Qt框架实现UI界面和WebSocket连接功能。用户可以输入WebSocket服务器的URL,连接服务器,发送和接收消息,并断开连接。通过信号和槽机制实现WebSocket连接状态的更新和消息的处理。

2、主要方法

2.1设置服务器端url

在构造函数里设置需要访问的服务器端url,并设置相应的信号槽机制

复制代码
WebSocketClientDemo::WebSocketClientDemo(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);

    ui.lineEdit_URL->setText("ws://192.168.0.109:8000/topic=10001"); //访问的服务器端url
    ui.label_ConnectStatus->clear();


    //成功连接时执行onconnected()信号
    connect(&m_websocket, SIGNAL(connected()), this, SLOT(onconnected()));
    //断开连接时执行closeConnection()信号
    connect(&m_websocket, SIGNAL(disconnected()), this, SLOT(closeConnection()));
    //收到服务器端发送的消息执行onTextMessageReceived(QString)信号
    connect(&m_websocket, SIGNAL(textMessageReceived(QString)), this, SLOT(onTextMessageReceived(QString)));
}
2.2连接服务器
复制代码
void WebSocketClientDemo::on_btnConnect_clicked()
{
    QString _text = ui.lineEdit_URL->text();
    QUrl url = QUrl(_text);
    m_websocket.open(url);
}
2.3发送消息
复制代码
void WebSocketClientDemo::on_btnSend_clicked()
{
    QString msg = ui.textEdit_send->document()->toPlainText();

    string dataMsg = R"(
        "sender":"10002",
        "receiver":"10001",
        "msg":"你好"
    )";
    
    m_websocket.sendTextMessage(msg);
}

三、服务器端与客户端通信流程分析

代码示例很简单,更重要的是理解怎么实现的客户端和服务器端的通信功能

1、通信流程

|----------------------------------------------|
| 1、服务器端启动WebSocket服务器,并监听指定的IP和端口。 |
| 2、客户端通过WebSocket协议连接到服务器端。 |
| 3、服务器端接受客户端的连接请求,建立WebSocket连接。 |
| 4、一旦连接建立成功,服务器端和客户端之间可以通过该WebSocket连接进行实时通信。 |
| 5、服务器端可以向客户端发送消息,客户端也可以向服务器端发送消息。 |
| 6、服务器端和客户端可以通过事件处理机制来处理连接、消息接收和断开等事件。 |

2、具体分析

服务器端通过QWebSocketServer类创建WebSocket服务器实例,然后监听客户端的连接请求。当有新的客户端连接到服务器时,会触发onNewConnection()槽函数,服务器端会保存连接,并更新在线用户列表。服务器端可以通过processTextMessage()函数处理接收到的消息,并实现消息的转发。当客户端断开连接时,会触发socketDisconnected()函数,服务器端会从在线用户列表中移除断开的客户端。


以上就是如何实现websocket client客户端的简单介绍

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

相关推荐
小徐不徐说2 分钟前
数据库存储基础:理解表结构、主键、事务与 BLOB
开发语言·数据库·c++·qt·程序设计
草莓熊Lotso15 分钟前
【C++ 基于微服务的即时通讯系统】网关基建:cpp-httplib 与 WebSocketpp 从入门到实战
linux·开发语言·数据库·c++·redis·微服务·云原生
李纲明17 分钟前
WordPress 媒体库上传失败或一直转圈:先核 PHP 上传限制与目录权限,再查安全插件与对象存储
运维·开发语言·安全·php·wordpress·媒体库·devdiy
第九序言T9 小时前
Python 数据处理进阶(十八)批量处理同结构文件:一个文件夹一次跑完
开发语言·python·自动化·pandas·数据处理
龙亘川10 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
程序喵大人10 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
Da Da 泓10 小时前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
Raas10011 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品
专注仿真11 小时前
线性回归和逻辑回归算法详解
开发语言·人工智能·python·大模型训练·控制算法
jimy112 小时前
C++ 中的 `T&&`:右值引用与转发引用
开发语言·c++