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

往期回顾

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

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

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

 【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的简单介绍。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值