From 96b5379aba6c6753f1be28f05e773011e230e218 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Fri, 10 Feb 2023 14:53:51 +0100 Subject: [PATCH] Add support for websocket subprotocols --- mainwindow.cpp | 8 +++++++- mainwindow.ui | 40 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 65b5179..b2c6c6f 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -3,6 +3,7 @@ #include #include +#include // utilities namespace { @@ -61,7 +62,10 @@ void MainWindow::connectClicked() .arg(QTime::currentTime().toString()) .arg(tr("Connecting to %0").arg(url.toString()))); - m_webSocket.open(url); + QWebSocketHandshakeOptions options; + if (m_ui->checkBoxUseSubprotocol->isChecked()) + options.setSubprotocols({m_ui->lineEditSubprotocol->text()}); + m_webSocket.open(url, std::move(options)); } else m_webSocket.close(); @@ -104,6 +108,8 @@ void MainWindow::stateChanged(QAbstractSocket::SocketState state) { m_ui->lineEditUrl->setEnabled(state == QAbstractSocket::UnconnectedState); m_ui->pushButtonConnect->setText(state == QAbstractSocket::UnconnectedState ? tr("Connect") : tr("Disconnect")); + m_ui->checkBoxUseSubprotocol->setEnabled(state == QAbstractSocket::UnconnectedState); + m_ui->lineEditSubprotocol->setEnabled(state == QAbstractSocket::UnconnectedState ? m_ui->checkBoxUseSubprotocol->isChecked() : false); m_ui->labelStatus->setText(qtEnumToString(state)); m_ui->lineEditSend->setEnabled(state == QAbstractSocket::ConnectedState); m_ui->pushButtonSend->setEnabled(state == QAbstractSocket::ConnectedState); diff --git a/mainwindow.ui b/mainwindow.ui index 0d7fbc8..868e4f0 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -6,7 +6,7 @@ 0 0 - 800 + 1011 600 @@ -16,7 +16,7 @@ - + @@ -24,6 +24,23 @@ + + + + Use subprotocol: + + + + + + + false + + + ocpp1.6 + + + @@ -66,5 +83,22 @@ - + + + checkBoxUseSubprotocol + toggled(bool) + lineEditSubprotocol + setEnabled(bool) + + + 654 + 22 + + + 787 + 22 + + + +