Revision control
++ // Copyright (C) 2016 Kurt Pattyn <pattyn.kurt@gmail.com>.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
++ #include "sslechoclient.h"
++ #include <QtCore/QCoreApplication>
++ #include <QtCore/QDebug>
++ #include <QtCore/QFile>
++ #include <QtWebSockets/QWebSocket>
++
++ QT_USE_NAMESPACE
++
++ //! [constructor]
++ SslEchoClient::SslEchoClient(const QUrl &url, QObject *parent) :
++ QObject(parent)
++ {
++ connect(&m_webSocket, &QWebSocket::connected, this, &SslEchoClient::onConnected);
++ connect(&m_webSocket, QOverload<const QList<QSslError>&>::of(&QWebSocket::sslErrors),
++ this, &SslEchoClient::onSslErrors);
++
++ QSslConfiguration sslConfiguration;
++ QFile certFile(QStringLiteral(":/localhost.cert"));
++ certFile.open(QIODevice::ReadOnly);
++ QSslCertificate certificate(&certFile, QSsl::Pem);
++ certFile.close();
++ sslConfiguration.addCaCertificate(certificate);
++ m_webSocket.setSslConfiguration(sslConfiguration);
++
++ m_webSocket.open(url);
++ }
++ //! [constructor]
++
++ //! [onConnected]
++ void SslEchoClient::onConnected()
++ {
++ qDebug() << "WebSocket connected";
++ connect(&m_webSocket, &QWebSocket::textMessageReceived,
++ this, &SslEchoClient::onTextMessageReceived);
++ m_webSocket.sendTextMessage(QStringLiteral("Hello, world!"));
++ }
++ //! [onConnected]
++
++ //! [onTextMessageReceived]
++ void SslEchoClient::onTextMessageReceived(QString message)
++ {
++ qDebug() << "Message received:" << message;
++ qApp->quit();
++ }
++
++ void SslEchoClient::onSslErrors(const QList<QSslError> &errors)
++ {
++ qWarning() << "SSL errors:" << errors;
++
++ qApp->quit();
++ }
++ //! [onTextMessageReceived]