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

往期回顾

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

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

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

相关推荐

  1. QTQt http编程websocket简单介绍

    2024-04-23 17:28:02       41 阅读
  2. QTQt http编程json解析简单介绍

    2024-04-23 17:28:02       42 阅读
  3. QTQt http编程http与https简单介绍

    2024-04-23 17:28:02       43 阅读
  4. QTQt Web混合编程CEF、QCefView简单介绍

    2024-04-23 17:28:02       40 阅读
  5. QTQt线程与并发QtConcurrent简单介绍

    2024-04-23 17:28:02       40 阅读
  6. QTQt线程与并发线程和并发简单介绍

    2024-04-23 17:28:02       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-23 17:28:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-23 17:28:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-23 17:28:02       87 阅读
  4. Python语言-面向对象

    2024-04-23 17:28:02       96 阅读

热门阅读

  1. DBever SQL编辑器的高级应用:如何用变量快速查询

    2024-04-23 17:28:02       30 阅读
  2. Leetcode 605. Can Place Flowers

    2024-04-23 17:28:02       35 阅读
  3. php常见图片处理方法

    2024-04-23 17:28:02       37 阅读
  4. SpringBoot学习路线推荐

    2024-04-23 17:28:02       39 阅读
  5. 算法刷题记录 Day51

    2024-04-23 17:28:02       33 阅读
  6. 在线办公:巨头通往新质生产力的一把利剑

    2024-04-23 17:28:02       34 阅读
  7. Python-07-循环遍历、嵌套循环

    2024-04-23 17:28:02       28 阅读
  8. 支持三十多个算法的免费科学计算API

    2024-04-23 17:28:02       32 阅读