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

news/2024/9/23 20:34:21/

往期回顾

【QT进阶】Qt http编程之用户登录注册功能实现-CSDN博客

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

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

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

一、什么是websocket

1、简介

websocket是HTML5中新增的一个协议,这个协议的出现,让客户端和服务器之前的数据交互变成全双工的。websocket的出现,最主要的变化是允许服务器主动给客户端推送数据。这一大改变,就让websocket具有了以往其它协议无法比拟的实时通信能力。要实现websocket服务,需要客户端和服务端都得支持websocket协议才可以。目前看来,并没有太多标准性的框架来完成websocket服务。

2、WebSocket能做什么?

在Web开发中,WebSocket常用于实现即时通讯、在线游戏、实时数据更新等场景,能够提供更流畅、实时的用户体验。WebSocket通常与其他技术如JavaScript、Node.js等配合使用,实现各种实时应用程序。

常见于聊天、消息推送、多人在线业务,推荐一个开源项目OpenIM

OpenIM Docs

websocket协议详细链接: 

RFC 6455 - The WebSocket Protocol 

3、 WebSocket特点

全双工通信:WebSocket允许客户端和服务器之间同时进行双向通信,而不像HTTP协议那样需要客户端先发起请求。
低延迟:由于WebSocket建立在单个TCP连接上,避免了HTTP中频繁建立和关闭连接的开销,从而降低了通信延迟。
轻量级:WebSocket协议头部较小,减少了数据传输时的开销,适合实时通信和大量数据传输。
跨平台支持:WebSocket协议被广泛支持,可以在Web浏览器、移动应用程序等多种平台上使用。
安全性:WebSocket支持加密传输,可以通过TLS/SSL协议保障通信的安全性。

 4、websocket与http的对比

4.1相同点
(1)都是应用层协议。
(2)都是一样基于TCP的,都是可靠性传输协议。
4.2不同点 
(1)websocket 是持久连接,http 是短连接;
(2)websocket 的协议是以ws/wss开头,http 对应的是http/https;
(3)websocket是有状态的,http 是无状态的;
(4)websocket连接之后服务器和客户端可以双向发送数据,http只能是客
户端发起一 次请求之后,服务器才能返回数据;
(5)websocket连接建立之后,不需要再发送request请求,数据直接从TCP
通道传输。

5、WebSocket的实现

5.1C+ + websocket的实现

websocket不同的语言都会有各自的实现,并且每种语言里都有多个实现。websocketpp是用c++实现的一个websocket库,用来支持websocket协议。如果是C++程序员,建议使用websocketpp来做开发。

websocketpp仓库:

https://github.com/ zaphoyd/websocketpp

5.2Qt websocket的实现 

QT也提供了WebSocket的实现,可以通过QT的QtWebSockets模块来实现WebSocket通信。QtWebSockets提供了QWebSocket类,可以方便地在QT项目中使用WebSocket通信。

5.2.1示例
#include <QCoreApplication>
#include <QtWebSockets/QWebSocket>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QWebSocket webSocket;webSocket.open(QUrl("ws://echo.websocket.org"));QObject::connect(&webSocket, &QWebSocket::connected, [&webSocket](){qDebug() << "Connected to WebSocket server";webSocket.sendTextMessage("Hello, WebSocket!");});QObject::connect(&webSocket, &QWebSocket::textMessageReceived, [](QString message){qDebug() << "Received message:" << message;});return a.exec();
}

在这个示例中,我们创建了一个QWebSocket对象,并连接到WebSocket服务器"ws://echo.websocket.org"。一旦连接建立,我们发送一条文本消息"Hello, WebSocket!"。当收到服务器返回的消息时,我们会打印出消息内容。 


以上就是Qt里websocket的简单介绍。

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

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


http://www.ppmy.cn/news/1438239.html

相关文章

第56篇:创建Nios II工程之Hello_World<二>

Q&#xff1a;上一期介绍完基本设计流程和实验原理&#xff0c;接着我们完成系统硬件设计部分&#xff0c;包括Platform Designer系统及Quartus工程。 A&#xff1a;依次搜索并添加Nios II Processor、JTAG UART、On-Chip Memory和System ID IP组件&#xff0c;连接各组件并As…

CDN引入Vue3

选择CDN版本 vue.global.prod.js > 在head中使用 引入后&#xff0c;在后续根组件和子组件中可以通过全局的Vue,来引入对应ref、createApp等方法&#xff0c;如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF…

目标检测——行人和骑自行车者数据集

一、重要性及意义 行人和骑自行车者检测在计算机视觉和自动驾驶等领域具有重要的意义和广泛的应用。以下是关于行人和骑自行车者检测的重要性及意义的详细阐述&#xff1a; 安全性提升 道路安全&#xff1a;行人和骑自行车者是道路交通中的脆弱群体&#xff0c;他们缺乏防护措…

计算机视觉成新宠儿,三防平板助力医疗保健

计算机视觉是医疗保健行业的一个相当新的趋势&#xff0c;其中图像用于帮助识别和预测患者的诊断&#xff0c;提高准确性&#xff0c;利用计算机图像来做到这一点。图像被拍摄并上传到系统中&#xff0c;然后通过计算机算法进行分析&#xff0c;以优化医疗诊断&#xff0c;例如…

Azure AKS集群监控告警表达式配置

背景需求 Azure AKS集群中&#xff0c;需要对部署的服务进行监控和告警&#xff0c;需要创建并启用预警规则&#xff0c;而这里怎么去监控每个pod级别的CPU和内存&#xff0c;需要自己写搜索查询 解决方法 搜索和查询的语句如下&#xff0c;需要自己替换其中的部分信息,其中…

【electron报错】 electron-buidler打包sqlite3问题汇总

electron-builder配置打包sqlite3 我这里执行打包命令后&#xff0c;运行electron的安装包就弹出一个弹框具体信息为&#xff1a;说是主进程的js脚本有问题&#xff0c;indexOf查找不到 TypeError: Cannot read property indexOf of undefined...我这里使用了electron框架属于…

C语言笔试题之找出数组的最大公约数

找出数组的最大公约数 实例要求 1、给定一个整数数组 &#xff0c;返回数组中最大数和最小数的最大公约数&#xff1b;2、两个数的最大公约数是能够被两个数整除的最大正整数&#xff1b;示例&#xff1a; 实例分析 1、要找到数组中最大数和最小数的最大公约数&#xff1b…

【nvm最新解决方案】Node.js v16.20.2 is not yet released or available

【nvm最新解决方案】Node.js v16.20.2 is not yet released or available 解决办法&#xff1a;下载想安装的node压缩包&#xff0c;放入nvm对应目录。 2024年最新node压缩包地址&#xff1a;https://nodejs.org/dist/ 1、选择对应的node版本&#xff1a;例如&#xff0c;我选的…