QT使⽤websocket进⾏长连接
⼀般我们⽤的最多的就是http请求,但是频繁的请求可能对服务造成的压⼒很⼤,所以今天谈谈websocket长连接,⼀句话:简单1、什么是长连接?
A:⼀次请求连接,终⾝使⽤,就可以长久的保持信息的交互,除⾮服务挂了
2、QT⾥⾯是如何使⽤websocket进⾏长连接的
①⾸先在pro⽂件⾥⾯添加QT += websockets
②#include <QWebSocket>
recv函数③初始化
_pdataRecvWS = new QWebSocket();
connect(_pdataRecvWS,SIGNAL(disconnected()),this,SLOT(onDisconnected()),Qt::AutoConnection);
connect(_pdataRecvWS,SIGNAL(textMessageReceived(QString)),this,SLOT(onTextReceived(QString)),Qt::AutoConnection);
connect(_pdataRecvWS,SIGNAL(connected()),this,SLOT(onConnected()),Qt::AutoConnection);
connect(_ptimer,SIGNAL(timeout()),this,SLOT(reconnect()),Qt::AutoConnection);
_pdataRecvWS->open(QUrl("ws://localhost:8080"));
④对应的槽函数
//断开连接会触发这个槽函数
void MainWindow::onDisconnected()
{
_ptimer->start(3000);
ui->textEdit->append("websocket is disconnected");
}
//连接成功会触发这个槽函数
void MainWindow::onConnected()
{
_ptimer->stop();
ui->textEdit->append("connect successful");
}
//收到服务发来的消息会触发这个槽函数
void MainWindow::onTextReceived(QString msg)
{
ui->textEdit->append("textReceiveString" + msg);
}
//断开连接会启动定时器,触发这个槽函数重新连接
void MainWindow::reconnect()
{
ui->textEdit->append("websocket reconnected");
_pdataRecvWS->abort();
_pdataRecvWS->open(QUrl("ws://localhost:8080"));
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论