往期回顾
【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的简单介绍。
都看到这里了,点个赞再走呗朋友~
加油吧,预祝大家变得更强!