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

ops/2024/11/20 10:26:50/

往期回顾

【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/ops/17214.html

相关文章

07.JAVAEE之线程5

与面试相关 1.常见的锁策略 不是一把具体的锁&#xff0c;而是一类锁 1.1 乐观锁 vs 悲观锁 悲观乐观,是对后续锁冲突是否激烈(频繁)给出的预测 如果预测接下来锁冲突的概率不大,就可以少做一些工作. 就称为 乐观锁 如果预测接下来锁冲突的概率很大,就应该多做一些工作. …

ruoyi-cloud-plus添加一个不要认证的公开新页面

文章目录 一、前端1. 组件创建2. src/router/index.ts3. src/permission.ts 二、后端1. 设计思想2. ruoyi-gateway.yml3. 开发Controller 版本RuoYiCloudPlusv2.1.2plus-uiVue3 ts 以新增一个公开的课程搜索页面为例。 一、前端 1. 组件创建 在view目录下创建一个页面的vue…

Kotlin语法快速入门--条件控制和循环语句(2)

Kotlin语法入门–条件控制和循环语句&#xff08;2&#xff09; 文章目录 Kotlin语法入门--条件控制和循环语句&#xff08;2&#xff09;二、条件控制和循环语句1、if...else2、when2.1、常规用法2.2、特殊用法--并列&#xff1a;2.3、特殊用法--类型判断&#xff1a;2.4、特殊…

virtio-wayland

CrosVM是Chrome操作系统中&#xff0c;用于创建虚拟机的应用。是一个Rust编写的轻量级的虚拟机。借助于CrosVM 用户可以很容易的在ChromeOS中运行Linux、Android以及Windows应用程序 概述 目前crosvm实现了virtio wayland协议&#xff0c;实现了对linux虚拟机wayland协议支持 …

idea上传项目到gitee(码云)

1、打开码云&#xff0c;新建仓库 2、创建 3、这就是创建成功的页面 4、复制仓库地址&#xff0c;后面需要用到 2、打开我们的项目&#xff1a;例如我现在的项目 1、idea创建git仓库 2、选择我们项目文件夹的目录 3、查看文件是否变色&#xff0c;变色表示成功了 4、添加到缓…

typescript中声明新的对象类型

在 TypeScript 中声明新的对象类型主要有两种方式&#xff1a;使用 interface 和 type 关键字。这两种方法在很多情况下都可以互换使用&#xff0c;但它们也有一些不同的特性和用法。下面将介绍如何使用这两种方法来声明新的对象类型。 使用 interface 声明对象类型 interfac…

数字化革新:可视化墨水屏引领基板工艺MSAP贴膜阶段迈向无纸化高端制造应用背景

随着科技的飞速发展和环境保护意识的日益增强&#xff0c;制造印刷电路板&#xff08;PCB&#xff09;行业正面临着提升生产效率、降低资源消耗和推动绿色制造的迫切需求。 问题&#xff1a; PCB生产过程对洁净度要求高&#xff0c;传统打印的纸张会有粉尘&#xff0c;纸屑&am…

Java中使用Graphics2D实现字符串- 竖直并居中排序显示算法

效果&#xff1a; 代码&#xff1a; public static void drawMyString(Graphics textGraphics, String text) {// 每列显示的汉字数量int columnSize 7;// 文字之间的垂直间距int verticalSpacing 75;// 获取字体渲染上下文FontMetrics fm textGraphics.getFontMetrics();//…