QWebSocket Class
Implementiert einen TCP-Socket, der das WebSocket-Protokoll unterstützt. Mehr...
| Header: | #include <QWebSocket> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS WebSockets) target_link_libraries(mytarget PRIVATE Qt6::WebSockets) |
| qmake: | QT += websockets |
| Erbt von: | QObject |
Öffentliche Funktionen
| QWebSocket(const QString &origin = QString(), QWebSocketProtocol::Version version = QWebSocketProtocol::VersionLatest, QObject *parent = nullptr) | |
| virtual | ~QWebSocket() override |
| void | abort() |
| qint64 | bytesToWrite() const |
| QWebSocketProtocol::CloseCode | closeCode() const |
| QString | closeReason() const |
(since 6.2) void | continueInterruptedHandshake() |
| QAbstractSocket::SocketError | error() const |
| QString | errorString() const |
| bool | flush() |
(since 6.4) QWebSocketHandshakeOptions | handshakeOptions() const |
| void | ignoreSslErrors(const QList<QSslError> &errors) |
| bool | isValid() const |
| QHostAddress | localAddress() const |
| quint16 | localPort() const |
| const QMaskGenerator * | maskGenerator() const |
| quint64 | maxAllowedIncomingFrameSize() const |
| quint64 | maxAllowedIncomingMessageSize() const |
| QString | origin() const |
| quint64 | outgoingFrameSize() const |
| QAbstractSocket::PauseModes | pauseMode() const |
| QHostAddress | peerAddress() const |
| QString | peerName() const |
| quint16 | peerPort() const |
| QNetworkProxy | proxy() const |
| qint64 | readBufferSize() const |
| QNetworkRequest | request() const |
| QUrl | requestUrl() const |
| QString | resourceName() const |
| void | resume() |
| qint64 | sendBinaryMessage(const QByteArray &data) |
| qint64 | sendTextMessage(const QString &message) |
| void | setMaskGenerator(const QMaskGenerator *maskGenerator) |
| void | setMaxAllowedIncomingFrameSize(quint64 maxAllowedIncomingFrameSize) |
| void | setMaxAllowedIncomingMessageSize(quint64 maxAllowedIncomingMessageSize) |
| void | setOutgoingFrameSize(quint64 outgoingFrameSize) |
| void | setPauseMode(QAbstractSocket::PauseModes pauseMode) |
| void | setProxy(const QNetworkProxy &networkProxy) |
| void | setReadBufferSize(qint64 size) |
| void | setSslConfiguration(const QSslConfiguration &sslConfiguration) |
| QSslConfiguration | sslConfiguration() const |
| QAbstractSocket::SocketState | state() const |
(since 6.4) QString | subprotocol() const |
| QWebSocketProtocol::Version | version() const |
Öffentliche Slots
| void | close(QWebSocketProtocol::CloseCode closeCode = QWebSocketProtocol::CloseCodeNormal, const QString &reason = QString()) |
| void | ignoreSslErrors() |
| void | open(const QNetworkRequest &request) |
| void | open(const QUrl &url) |
(since 6.4) void | open(const QNetworkRequest &request, const QWebSocketHandshakeOptions &options) |
(since 6.4) void | open(const QUrl &url, const QWebSocketHandshakeOptions &options) |
| void | ping(const QByteArray &payload = QByteArray()) |
Signale
| void | aboutToClose() |
(since 6.2) void | alertReceived(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description) |
(since 6.2) void | alertSent(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description) |
(since 6.6) void | authenticationRequired(QAuthenticator *authenticator) |
| void | binaryFrameReceived(const QByteArray &frame, bool isLastFrame) |
| void | binaryMessageReceived(const QByteArray &message) |
| void | bytesWritten(qint64 bytes) |
| void | connected() |
| void | disconnected() |
(since 6.5) void | errorOccurred(QAbstractSocket::SocketError error) |
(since 6.2) void | handshakeInterruptedOnError(const QSslError &error) |
(since 6.2) void | peerVerifyError(const QSslError &error) |
| void | pong(quint64 elapsedTime, const QByteArray &payload) |
| void | preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator) |
| void | proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator) |
| void | readChannelFinished() |
| void | sslErrors(const QList<QSslError> &errors) |
| void | stateChanged(QAbstractSocket::SocketState state) |
| void | textFrameReceived(const QString &frame, bool isLastFrame) |
| void | textMessageReceived(const QString &message) |
Statische öffentliche Elemente
| quint64 | maxIncomingFrameSize() |
| quint64 | maxIncomingMessageSize() |
| quint64 | maxOutgoingFrameSize() |
Ausführliche Beschreibung
WebSockets ist eine Webtechnologie, die Vollduplex-Kommunikationskanäle über eine einzige TCP-Verbindung bereitstellt. Das WebSocket-Protokoll wurde 2011 von der IETF als RFC 6455 standardisiert. QWebSocket kann sowohl in einer Client- als auch in einer Serveranwendung verwendet werden.
Diese Klasse wurde nach dem Vorbild von QAbstractSocket modelliert.
QWebSocket unterstützt derzeit keine WebSocket-Erweiterungen.
QWebSocket unterstützt nur Version 13 des WebSocket-Protokolls, wie in RFC 6455 beschrieben.
Hinweis: Einige Proxys verstehen bestimmte HTTP-Header nicht, die während eines WebSocket-Handshakes verwendet werden. In diesem Fall schlagen ungesicherte WebSocket-Verbindungen fehl. Die beste Möglichkeit, dieses Problem zu umgehen, ist die Verwendung von WebSocket über eine gesicherte Verbindung.
Warnung: Zur Erzeugung von Masken verwendet diese WebSocket-Implementierung die relativ sichere Funktion ` QRandomGenerator::global()->generate()`. Weitere Informationen zur Bedeutung einer guten Maskierung finden Sie in „Talking to Yourself for Fun and Profit“ von Lin-Shung Huang et al. Die beste Maßnahme gegen die im oben genannten Dokument erwähnten Angriffe ist die Verwendung von QWebSocket über eine sichere Verbindung (wss://). Achten Sie generell stets darauf, dass Skripte von Drittanbietern keinen Zugriff auf ein QWebSocket in Ihrer Anwendung haben.
Siehe auch QAbstractSocket, QTcpSocket und das QWebSocket-Client-Beispiel.
Dokumentation zu den Member-Funktionen
[explicit] QWebSocket::QWebSocket(const QString &origin = QString(), QWebSocketProtocol::Version version = QWebSocketProtocol::VersionLatest, QObject *parent = nullptr)
Erstellt einen neuen QWebSocket mit dem angegebenen ` origin`, dem ` version ` des zu verwendenden Protokolls und ` parent`.
Die „ origin “ des Clients entspricht der Spezifikation in RFC 6454. (Der „ origin “ ist für Clients, die keine Webbrowser sind, nicht erforderlich (siehe RFC 6455)). Die „ origin “ darf keine Zeilenumbruchzeichen enthalten, andernfalls wird die Verbindung während der Handshake-Phase sofort abgebrochen.
Hinweis: Derzeit wird nur V13 (RFC 6455) unterstützt.
[override virtual noexcept] QWebSocket::~QWebSocket()
Löscht die „ QWebSocket “. Schließt den Socket, falls dieser noch geöffnet ist, und gibt alle verwendeten Ressourcen frei.
void QWebSocket::abort()
Bricht den aktuellen Socket ab und setzt ihn zurück. Im Gegensatz zu ` close()` schließt diese Funktion den Socket sofort und verwirft dabei alle noch im Schreibpuffer befindlichen Daten.
[signal] void QWebSocket::aboutToClose()
Dieses Signal wird ausgegeben, wenn der Socket kurz vor dem Schließen steht. Binden Sie dieses Signal ein, wenn Sie Operationen ausführen müssen, bevor der Socket geschlossen wird (z. B. wenn Sie Daten in einem separaten Puffer haben, die auf das Gerät geschrieben werden müssen).
Siehe auch „ close()“.
[signal, since 6.2] void QWebSocket::alertReceived(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description)
QWebSocket Gibt dieses Signal aus, wenn eine Warnmeldung von einem Peer empfangen wurde. „ level “ gibt an, ob es sich bei der Warnung um einen schwerwiegenden Fehler oder um eine Warnung handelte. „ type “ ist der Code, der erklärt, warum die Warnung gesendet wurde. Wenn eine textuelle Beschreibung der Warnmeldung verfügbar ist, wird diese in „ description “ bereitgestellt.
Hinweis: Das Signal dient hauptsächlich zu Informations- und Debugging-Zwecken und erfordert keine spezielle Behandlung in der Anwendung. War die Warnmeldung schwerwiegend, wird sie vom zugrunde liegenden Backend behandelt und die Verbindung geschlossen.
Hinweis: Nicht alle Backends unterstützen diese Funktionalität.
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch alertSent(), QSsl::AlertLevel und QSsl::AlertType.
[signal, since 6.2] void QWebSocket::alertSent(QSsl::AlertLevel level, QSsl::AlertType type, const QString &description)
QWebSocket Gibt dieses Signal aus, wenn eine Warnmeldung an einen Peer gesendet wurde. level gibt an, ob es sich um eine Warnung oder einen schwerwiegenden Fehler handelte. type liefert den Code der Warnmeldung. Wenn eine textuelle Beschreibung der Warnmeldung verfügbar ist, wird diese in description bereitgestellt.
Hinweis: Dieses Signal dient hauptsächlich zu Informationszwecken und kann zu Debugging-Zwecken verwendet werden; normalerweise erfordert es keine Maßnahmen seitens der Anwendung.
Hinweis: Nicht alle Backends unterstützen diese Funktionalität.
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch „ alertReceived()“, „ QSsl::AlertLevel “ und „ QSsl::AlertType “.
[signal, since 6.6] void QWebSocket::authenticationRequired(QAuthenticator *authenticator)
Dieses Signal wird ausgegeben, wenn der Server eine Authentifizierung verlangt. Das Objekt „ authenticator “ muss dann mit den erforderlichen Angaben gefüllt werden, um die Authentifizierung zu ermöglichen und die Verbindung fortzusetzen.
Wenn Sie wissen, dass der Server möglicherweise eine Authentifizierung erfordert, können Sie den Benutzernamen und das Passwort bereits bei der ersten „ QUrl “ festlegen, indem Sie „ QUrl::setUserName “ und „ QUrl::setPassword “ verwenden. „ QWebSocket “ versucht dennoch einmal, eine Verbindung herzustellen, ohne die angegebenen Anmeldedaten zu verwenden.
Hinweis: Es ist nicht möglich, eine `QueuedConnection` für die Verbindung zu diesem Signal zu verwenden, da die Verbindung fehlschlägt, wenn der Authentifikator bei der Rückgabe des Signals nicht mit neuen Informationen gefüllt wurde.
Diese Funktion wurde in Qt 6.6 eingeführt.
Siehe auch QAuthenticator.
[signal] void QWebSocket::binaryFrameReceived(const QByteArray &frame, bool isLastFrame)
Dieses Signal wird immer dann ausgegeben, wenn ein binärer Frame empfangen wird. Das „ frame “ enthält die Daten, und das „ isLastFrame “ gibt an, ob es sich um den letzten Frame der gesamten Nachricht handelt.
Dieses Signal kann verwendet werden, um große Nachrichten Frame für Frame zu verarbeiten, anstatt auf das Eintreffen der vollständigen Nachricht zu warten.
Siehe auch textFrameReceived().
[signal] void QWebSocket::binaryMessageReceived(const QByteArray &message)
Dieses Signal wird immer dann ausgegeben, wenn eine binäre Nachricht empfangen wird. Die Variable „ message “ enthält die empfangenen Bytes.
Siehe auch ` textMessageReceived()`.
qint64 QWebSocket::bytesToWrite() const
Gibt die Anzahl der Bytes zurück, die auf das Schreiben warten. Die Bytes werden geschrieben, sobald die Steuerung wieder an die Ereignisschleife zurückgegeben wird oder wenn flush() aufgerufen wird.
Siehe auch ` flush`.
[signal] void QWebSocket::bytesWritten(qint64 bytes)
Dieses Signal wird jedes Mal ausgelöst, wenn eine Datenlast in den Socket geschrieben wurde. Das Argument „ bytes “ wird auf die Anzahl der Bytes gesetzt, die in dieser Datenlast geschrieben wurden.
Hinweis: Dieses Signal hat sowohl für sichere als auch für nicht sichere WebSockets dieselbe Bedeutung. Im Gegensatz zu ` QSslSocket` wird `bytesWritten()` nur ausgelöst, wenn tatsächlich verschlüsselte Daten geschrieben wurden (siehe ` QSslSocket::encryptedBytesWritten()`).
Siehe auch close().
[slot] void QWebSocket::close(QWebSocketProtocol::CloseCode closeCode = QWebSocketProtocol::CloseCodeNormal, const QString &reason = QString())
Schließt den Socket ordnungsgemäß mit den angegebenen Werten für „ closeCode “ und „ reason “.
Alle Daten im Schreibpuffer werden vor dem Schließen des Sockets übertragen. Der „ closeCode “ ist ein „ QWebSocketProtocol::CloseCode “, der den Grund für das Schließen angibt, und „ reason “ beschreibt den Grund für das Schließen genauer. Alle Steuerrahmen, einschließlich des „Close“-Rahmens, sind auf 125 Byte begrenzt. Da zwei davon für „ closeCode “ verwendet werden, beträgt die maximale Länge von „ reason “ 123! Wenn „ reason “ diese Grenze überschreitet, wird er gekürzt.
QWebSocketProtocol::CloseCode QWebSocket::closeCode() const
Gibt den Code zurück, der angibt, warum der Socket geschlossen wurde.
Siehe auch „ QWebSocketProtocol::CloseCode “ und „ closeReason()“.
QString QWebSocket::closeReason() const
Gibt den Grund zurück, warum der Socket geschlossen wurde.
Siehe auch ` closeCode()`.
[signal] void QWebSocket::connected()
Wird ausgelöst, wenn eine Verbindung erfolgreich hergestellt wurde. Eine Verbindung gilt als erfolgreich hergestellt, wenn der Socket verbunden ist und der Handshake erfolgreich war.
Siehe auch open() und disconnected().
[since 6.2] void QWebSocket::continueInterruptedHandshake()
Wenn eine Anwendung auch nach dem Empfang des Signals „ handshakeInterruptedOnError()“ einen Handshake abschließen möchte, muss sie diese Funktion aufrufen. Dieser Aufruf muss aus einer Slot-Funktion erfolgen, die dem Signal zugeordnet ist. Die Signal-Slot-Verbindung muss direkt sein.
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch „ handshakeInterruptedOnError()“ und „ QSslConfiguration::setHandshakeMustInterruptOnError()“.
[signal] void QWebSocket::disconnected()
Wird ausgelöst, wenn die Verbindung zum Socket getrennt wird.
Siehe auch close() und connected().
QAbstractSocket::SocketError QWebSocket::error() const
Gibt den Typ des zuletzt aufgetretenen Fehlers zurück
Siehe auch ` errorString()`.
[signal, since 6.5] void QWebSocket::errorOccurred(QAbstractSocket::SocketError error)
Dieses Signal wird ausgegeben, nachdem ein Fehler aufgetreten ist.
Der Parameter „ error “ beschreibt die Art des aufgetretenen Fehlers.
QAbstractSocket::SocketError ist kein registrierter Metatyp, daher müssen Sie ihn bei Verbindungen in der Warteschlange mit ` Q_DECLARE_METATYPE()` und ` qRegisterMetaType()` registrieren.
Diese Funktion wurde in Qt 6.5 eingeführt.
Siehe auch error() und errorString().
QString QWebSocket::errorString() const
Gibt eine für Menschen lesbare Beschreibung des zuletzt aufgetretenen Fehlers zurück
Siehe auch ` error()`.
bool QWebSocket::flush()
Diese Funktion schreibt so viel wie möglich aus dem internen Schreibpuffer in den zugrunde liegenden Netzwerk-Socket, ohne zu blockieren. Wenn Daten geschrieben wurden, gibt diese Funktion „true“ zurück; andernfalls wird „false“ zurückgegeben. Rufen Sie diese Funktion auf, wenn „ QWebSocket “ die gepufferten Daten sofort senden soll. Die Anzahl der erfolgreich geschriebenen Bytes hängt vom Betriebssystem ab. In den meisten Fällen müssen Sie diese Funktion nicht aufrufen, da „ QWebSocket “ automatisch mit dem Senden der Daten beginnt, sobald die Kontrolle wieder an die Ereignisschleife zurückgegeben wird.
[signal, since 6.2] void QWebSocket::handshakeInterruptedOnError(const QSslError &error)
QWebSocket Gibt dieses Signal aus, wenn ein Fehler bei der Zertifikatsüberprüfung festgestellt wurde und die frühzeitige Fehlermeldung unter „ QSslConfiguration “ aktiviert wurde. Von einer Anwendung wird erwartet, dass sie den „ error “ überprüft und entscheidet, ob sie den Handshake fortsetzen oder abbrechen und eine Warnmeldung an den Gegenpart senden möchte. Die Signal-Slot-Verbindung muss direkt sein.
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch continueInterruptedHandshake(), sslErrors() und QSslConfiguration::setHandshakeMustInterruptOnError().
[since 6.4] QWebSocketHandshakeOptions QWebSocket::handshakeOptions() const
Gibt die Handshake-Optionen zurück, die zum Öffnen dieses Sockets verwendet wurden.
Diese Funktion wurde in Qt 6.4 eingeführt.
[slot] void QWebSocket::ignoreSslErrors()
Dieser Slot weist ` QWebSocket ` an, Fehler während der Handshake-Phase von ` QWebSocket` zu ignorieren und die Verbindung fortzusetzen. Wenn Sie die Verbindung auch dann fortsetzen möchten, wenn während der Handshake-Phase Fehler auftreten, müssen Sie diesen Slot entweder aus einem mit ` sslErrors()` verbundenen Slot heraus oder vor der Handshake-Phase aufrufen. Wenn Sie diesen Slot weder als Reaktion auf Fehler noch vor dem Handshake aufrufen, wird die Verbindung nach dem Auslösen des Signals „ sslErrors()“ getrennt.
Warnung: Stellen Sie sicher, dass der Benutzer stets die vom Signal „ sslErrors()“ gemeldeten Fehler überprüfen kann, und rufen Sie diese Methode erst auf, nachdem der Benutzer bestätigt hat, dass die Fortsetzung in Ordnung ist. Bei unerwarteten Fehlern sollte die Verbindung abgebrochen werden. Der Aufruf dieser Methode ohne Überprüfung der tatsächlichen Fehler stellt höchstwahrscheinlich ein Sicherheitsrisiko für Ihre Anwendung dar. Verwenden Sie sie mit großer Vorsicht!
Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
webSocket, qOverload<>(&QWebSocket::ignoreSslErrors));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
webSocket, [receiver = webSocket]() { receiver->ignoreSslErrors(); });Siehe auch „ sslErrors()“, „ QSslSocket::ignoreSslErrors()“ und „ QNetworkReply::ignoreSslErrors()“.
void QWebSocket::ignoreSslErrors(const QList<QSslError> &errors)
Diese Methode weist „ QWebSocket “ an, die unter errors aufgeführten Fehler zu ignorieren.
Beachten Sie, dass Sie das erwartete Zertifikat im SSL-Fehler festlegen können: Wenn Sie beispielsweise eine Verbindung zu einem Server herstellen möchten, der ein selbstsigniertes Zertifikat verwendet, beachten Sie den folgenden Codeausschnitt:
QList<QSslCertificate> cert = QSslCertificate::fromPath(QLatin1String("server-certificate.pem"));
QSslError error(QSslError::SelfSignedCertificate, cert.at(0));
QList<QSslError> expectedSslErrors;
expectedSslErrors.append(error);
QWebSocket socket;
socket.ignoreSslErrors(expectedSslErrors);
socket.open(QUrl(QStringLiteral("wss://myserver.at.home")));Mehrere Aufrufe dieser Funktion überschreiben die Liste der Fehler, die bei früheren Aufrufen übergeben wurden. Sie können die Liste der Fehler, die Sie ignorieren möchten, löschen, indem Sie diese Funktion mit einer leeren Liste aufrufen.
Dies ist eine überladene Funktion.
Siehe auch ` sslErrors()`.
bool QWebSocket::isValid() const
Gibt „ true “ zurück, wenn der Socket zum Lesen und Schreiben bereit ist; andernfalls wird „ false “ zurückgegeben.
QHostAddress QWebSocket::localAddress() const
Gibt die lokale Adresse zurück
quint16 QWebSocket::localPort() const
Gibt den lokalen Port zurück
const QMaskGenerator *QWebSocket::maskGenerator() const
Gibt den Maskengenerator zurück, der derzeit von diesem „ QWebSocket “ verwendet wird.
Siehe auch setMaskGenerator().
quint64 QWebSocket::maxAllowedIncomingFrameSize() const
Gibt die maximal zulässige Größe eines eingehenden WebSocket-Frames zurück.
Siehe auch ` setMaxAllowedIncomingFrameSize()`.
quint64 QWebSocket::maxAllowedIncomingMessageSize() const
Gibt die maximal zulässige Größe einer eingehenden WebSocket-Nachricht zurück.
Siehe auch ` setMaxAllowedIncomingMessageSize()`.
[static] quint64 QWebSocket::maxIncomingFrameSize()
Gibt die maximal unterstützte Größe eines eingehenden WebSocket-Frames für diese WebSocket-Implementierung zurück.
[static] quint64 QWebSocket::maxIncomingMessageSize()
Gibt die maximal unterstützte Größe einer eingehenden WebSocket-Nachricht für diese WebSocket-Implementierung zurück.
[static] quint64 QWebSocket::maxOutgoingFrameSize()
Gibt die maximal unterstützte Größe eines ausgehenden WebSocket-Frames für diese WebSocket-Implementierung zurück.
[slot] void QWebSocket::open(const QNetworkRequest &request)
Öffnet eine WebSocket-Verbindung unter Verwendung der angegebenen URL „ request “.
Die URL „ request “ wird zum Öffnen der WebSocket-Verbindung verwendet. Die in der Anfrage enthaltenen Header werden zusammen mit den für den WebSocket-Handshake erforderlichen Headern in der Upgrade-Anfrage an den Server gesendet.
Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
webSocket, qOverload(&QWebSocket::open));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
webSocket, [receiver = webSocket](const QNetworkRequest &request) { receiver->open(request); }); [slot] void QWebSocket::open(const QUrl &url)
Öffnet eine WebSocket-Verbindung unter Verwendung der angegebenen URL url.
Enthält die URL Zeilenumbruchzeichen (\r\n ), wird ein Fehlersignal mit dem Fehlertyp „ QAbstractSocket::ConnectionRefusedError “ ausgelöst.
Hinweis: Dieser Slot ist überladen. So stellen Sie eine Verbindung zu diesem Slot her:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
webSocket, qOverload(&QWebSocket::open));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
webSocket, [receiver = webSocket](const QUrl &url) { receiver->open(url); }); [slot, since 6.4] void QWebSocket::open(const QNetworkRequest &request, const QWebSocketHandshakeOptions &options)
Öffnet eine WebSocket-Verbindung unter Verwendung der angegebenen URLs „ request “ und „ options “.
Die URL „ request “ wird zum Öffnen der WebSocket-Verbindung verwendet. Die in der Anfrage enthaltenen Header werden zusammen mit den für den WebSocket-Handshake erforderlichen Headern in der Upgrade-Anfrage an den Server gesendet.
Zusätzliche Optionen für den WebSocket-Handshake, wie z. B. Subprotokolle, können in options angegeben werden.
Hinweis: Dieser Slot ist überladen. Um eine Verbindung zu diesem Slot herzustellen:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
webSocket, qOverload(&QWebSocket::open));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
webSocket, [receiver = webSocket](const QNetworkRequest &request, const QWebSocketHandshakeOptions &options) { receiver->open(request, options); }); Diese Funktion wurde in Qt 6.4 eingeführt.
[slot, since 6.4] void QWebSocket::open(const QUrl &url, const QWebSocketHandshakeOptions &options)
Öffnet eine WebSocket-Verbindung unter Verwendung der angegebenen URLs „ url “ und „ options “.
Enthält die URL Zeilenumbruchzeichen (\r\n ), wird ein Fehlersignal mit dem Fehlertyp „ QAbstractSocket::ConnectionRefusedError “ ausgelöst.
Zusätzliche Optionen für den WebSocket-Handshake, wie z. B. Subprotokolle, können in ` options` angegeben werden.
Hinweis: Dieser Slot ist überladen. Um eine Verbindung zu diesem Slot herzustellen:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
webSocket, qOverload(&QWebSocket::open));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
webSocket, [receiver = webSocket](const QUrl &url, const QWebSocketHandshakeOptions &options) { receiver->open(url, options); }); Diese Funktion wurde in Qt 6.4 eingeführt.
QString QWebSocket::origin() const
Gibt den aktuellen Ursprung zurück.
quint64 QWebSocket::outgoingFrameSize() const
Gibt die maximale Größe eines ausgehenden WebSocket-Frames zurück.
Siehe auch ` setOutgoingFrameSize()`.
QAbstractSocket::PauseModes QWebSocket::pauseMode() const
Gibt den Pausenmodus dieses Sockets zurück
Siehe auch setPauseMode().
QHostAddress QWebSocket::peerAddress() const
Gibt die Peer-Adresse zurück
QString QWebSocket::peerName() const
Gibt den peerName zurück
quint16 QWebSocket::peerPort() const
Gibt den Peerport zurück
[signal, since 6.2] void QWebSocket::peerVerifyError(const QSslError &error)
QWebSocket kann dieses Signal während des SSL-Handshakes mehrmals aussenden, bevor die Verschlüsselung hergestellt wurde, um anzuzeigen, dass beim Feststellen der Identität des Gegenübers ein Fehler aufgetreten ist. Das „ error “ ist in der Regel ein Hinweis darauf, dass „ QWebSocket “ den Gegenüber nicht sicher identifizieren kann.
Dieses Signal liefert Ihnen einen frühzeitigen Hinweis darauf, dass etwas nicht stimmt. Indem Sie sich an dieses Signal anbinden, können Sie manuell entscheiden, die Verbindung innerhalb des „connected“-Slots abzubrechen, bevor der Handshake abgeschlossen ist. Wenn keine Maßnahmen ergriffen werden, sendet „ QWebSocket “ anschließend „ QWebSocket::sslErrors()“ aus.
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch ` sslErrors()`.
[slot] void QWebSocket::ping(const QByteArray &payload = QByteArray())
Sendet einen Ping an den Server, um anzuzeigen, dass die Verbindung noch besteht. Zusammen mit der Ping-Nachricht kann ein zusätzlicher „ payload “ gesendet werden.
Die Größe der „ payload “-Datei darf 125 Byte nicht überschreiten. Ist sie größer, wird die „ payload “-Datei auf 125 Byte gekürzt.
Hinweis: Die Funktionen ` QWebSocket ` und ` QWebSocketServer ` verarbeiten Ping-Anfragen intern, d. h., sie senden automatisch eine Pong-Antwort an den Peer zurück.
Siehe auch pong().
[signal] void QWebSocket::pong(quint64 elapsedTime, const QByteArray &payload)
Wird ausgegeben, wenn eine Pong-Nachricht als Antwort auf einen zuvor gesendeten Ping empfangen wird. „ elapsedTime “ enthält die Roundtrip-Zeit in Millisekunden und „ payload “ enthält eine optionale Nutzlast, die mit dem Ping gesendet wurde.
Siehe auch ping().
[signal] void QWebSocket::preSharedKeyAuthenticationRequired(QSslPreSharedKeyAuthenticator *authenticator)
Dieses Signal wird ausgegeben, wenn beim SSL/TLS-Handshake eine PSK-Verschlüsselungssuite ausgehandelt wird und daher eine PSK-Authentifizierung erforderlich ist.
Bei Verwendung von PSK muss der Client dem Server eine gültige Identität und einen gültigen vorab geteilten Schlüssel übermitteln, damit der SSL-Handshake fortgesetzt werden kann. Anwendungen können diese Informationen in einem mit diesem Signal verbundenen Slot bereitstellen, indem sie das übergebene ` authenticator `-Objekt entsprechend ihren Anforderungen ausfüllen.
Hinweis: Wird dieses Signalignoriert oder werden die erforderlichen Anmeldedaten nicht bereitgestellt, schlägt der Handshake fehl und die Verbindung wird abgebrochen.
Hinweis: Das ` authenticator `-Objekt gehört dem WebSocket und darf von der Anwendung nicht gelöscht werden.
Siehe auch „ QSslPreSharedKeyAuthenticator “ und „ QSslSocket::preSharedKeyAuthenticationRequired()“.
QNetworkProxy QWebSocket::proxy() const
Gibt den aktuell konfigurierten Proxy zurück
Siehe auch „ setProxy()“.
[signal] void QWebSocket::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
Dieses Signal kann ausgegeben werden, wenn eine „ proxy “ verwendet wird, die eine Authentifizierung erfordert. Das „ authenticator “-Objekt kann dann mit den erforderlichen Angaben gefüllt werden, um die Authentifizierung zu ermöglichen und die Verbindung fortzusetzen.
Hinweis: Es ist nicht möglich, eine „QueuedConnection“ zu verwenden, um eine Verbindung zu diesem Signal herzustellen, da die Verbindung fehlschlägt, wenn das „authenticator“-Objekt bei Rückgabe des Signals nicht mit neuen Informationen gefüllt wurde.
Siehe auch „ QAuthenticator “ und „ QNetworkProxy “.
qint64 QWebSocket::readBufferSize() const
Gibt die Größe des vom Socket verwendeten Lesepuffers in Byte zurück.
Siehe auch ` setReadBufferSize()`.
[signal] void QWebSocket::readChannelFinished()
Dieses Signal wird ausgegeben, wenn der Eingabe- (Lese-)Strom in diesem Gerät geschlossen wird. Es wird ausgegeben, sobald das Schließen erkannt wird.
Siehe auch ` close()`.
QNetworkRequest QWebSocket::request() const
Gibt die Anfrage zurück, die zum Öffnen dieses Sockets verwendet wurde oder verwendet werden wird.
QUrl QWebSocket::requestUrl() const
Gibt die URL zurück, mit der der Socket verbunden ist oder verbunden werden wird.
QString QWebSocket::resourceName() const
Gibt den Namen der Ressource zurück, auf die gerade zugegriffen wird.
void QWebSocket::resume()
Setzt die Datenübertragung über den Socket fort. Diese Methode sollte nur verwendet werden, nachdem der Socket so konfiguriert wurde, dass er bei Benachrichtigungen pausiert, und eine Benachrichtigung empfangen wurde. Die einzige derzeit unterstützte Benachrichtigung ist „ sslErrors()“. Der Aufruf dieser Methode, wenn der Socket nicht pausiert ist, führt zu undefiniertem Verhalten.
Siehe auch „ pauseMode()“ und „ setPauseMode()“.
qint64 QWebSocket::sendBinaryMessage(const QByteArray &data)
Sendet die angegebene „ data “ über den Socket als Binärnachricht und gibt die Anzahl der tatsächlich gesendeten Bytes zurück.
Siehe auch ` sendTextMessage()`.
qint64 QWebSocket::sendTextMessage(const QString &message)
Sendet die angegebene „ message “ als Textnachricht über den Socket und gibt die Anzahl der tatsächlich gesendeten Bytes zurück.
Siehe auch ` sendBinaryMessage()`.
void QWebSocket::setMaskGenerator(const QMaskGenerator *maskGenerator)
Legt den Generator fest, der zum Erstellen von Masken verwendet werden soll: maskGenerator. Der Standard QWebSocket -Generator kann durch die Übergabe eines nullptr zurückgesetzt werden. Der Maskengenerator kann jederzeit geändert werden, auch während die Verbindung offen ist.
Siehe auch maskGenerator().
void QWebSocket::setMaxAllowedIncomingFrameSize(quint64 maxAllowedIncomingFrameSize)
Legt die maximal zulässige Größe eines eingehenden WebSocket-Frames auf ` maxAllowedIncomingFrameSize` fest. Wenn ein eingehender Frame diese Grenze überschreitet, wird die Verbindung zum Gegenüber getrennt. Der zulässige Bereich liegt zwischen 0 und ` maxIncomingFrameSize`(); der Standardwert ist ` maxIncomingFrameSize`. Diese Funktion dient dazu, eine Überlastung des virtuellen Speichers zu vermeiden.
Siehe auch maxAllowedIncomingFrameSize().
void QWebSocket::setMaxAllowedIncomingMessageSize(quint64 maxAllowedIncomingMessageSize)
Legt die maximal zulässige Größe einer eingehenden WebSocket-Nachricht auf maxAllowedIncomingMessageSize fest. Wenn eine eingehende Nachricht diese Grenze überschreitet, wird die Verbindung zum Gegenüber getrennt. Der zulässige Wertebereich liegt zwischen 0 und maxIncomingMessageSize(), der Standardwert ist maxIncomingMessageSize(). Diese Funktion dient dazu, eine Überlastung des virtuellen Speichers zu vermeiden.
Siehe auch maxAllowedIncomingMessageSize().
void QWebSocket::setOutgoingFrameSize(quint64 outgoingFrameSize)
Legt die maximale Größe eines ausgehenden WebSocket-Frames auf ` outgoingFrameSize` fest. Der zulässige Bereich liegt zwischen 0 und ` maxOutgoingFrameSize` (), der Standardwert beträgt 512 kB. Diese Funktion dient dazu, sich an die maximal zulässige Frame-Größe des Empfängers anzupassen.
Siehe auch outgoingFrameSize().
void QWebSocket::setPauseMode(QAbstractSocket::PauseModes pauseMode)
Legt fest, ob beim Empfang einer Benachrichtigung eine Pause eingelegt werden soll. Der Parameter „ pauseMode “ gibt die Bedingungen an, unter denen der Socket angehalten werden soll.
Die einzige derzeit unterstützte Benachrichtigung ist ` sslErrors()`. Bei der Einstellung `PauseOnSslErrors` wird die Datenübertragung über den Socket angehalten und muss durch den Aufruf von ` resume()` explizit wieder aktiviert werden. Standardmäßig ist diese Option auf `PauseNever` gesetzt. Diese Option muss vor dem Herstellen der Verbindung zum Server aufgerufen werden, da es andernfalls zu undefiniertem Verhalten kommt.
Siehe auch „ pauseMode “ () und „ resume “ ().
void QWebSocket::setProxy(const QNetworkProxy &networkProxy)
Stellt den Proxy auf networkProxy
Siehe auch proxy().
void QWebSocket::setReadBufferSize(qint64 size)
Legt die Größe des internen Lesepuffers von „ QWebSocket “ auf size Byte fest.
Wenn die Puffergröße auf einen bestimmten Wert begrenzt ist, puffert ` QWebSocket ` nicht mehr Daten als diese Größe. Eine Puffergröße von 0 bedeutet hingegen, dass der Lesepuffer unbegrenzt ist und alle eingehenden Daten gepuffert werden. Dies ist die Standardeinstellung. Diese Option ist nützlich, wenn Sie die Daten nur zu bestimmten Zeitpunkten lesen (beispielsweise in einer Echtzeit-Streaming-Anwendung) oder wenn Sie Ihren Socket davor schützen möchten, zu viele Daten zu empfangen, was letztendlich dazu führen könnte, dass Ihrer Anwendung der Speicher ausgeht.
Siehe auch ` readBufferSize()`.
void QWebSocket::setSslConfiguration(const QSslConfiguration &sslConfiguration)
Legt die SSL-Konfiguration des Sockets auf den Inhalt von sslConfiguration fest.
Diese Funktion legt das lokale Zertifikat, die Verschlüsselungsalgorithmen, den privaten Schlüssel und die CA-Zertifikate so fest, wie sie unter sslConfiguration gespeichert sind. Es ist nicht möglich, die Felder zum SSL-Status festzulegen.
Siehe auch sslConfiguration().
QSslConfiguration QWebSocket::sslConfiguration() const
Gibt den Status der SSL-Konfiguration des Sockets zurück. Die Standard-SSL-Konfiguration eines Sockets sieht die Verwendung der Standard-Verschlüsselungsalgorithmen und Standard-CA-Zertifikate vor, ohne lokalen privaten Schlüssel oder Zertifikat. Die SSL-Konfiguration enthält außerdem Felder, die sich im Laufe der Zeit ohne Vorankündigung ändern können.
Siehe auch ` setSslConfiguration()`.
[signal] void QWebSocket::sslErrors(const QList<QSslError> &errors)
QWebSocket gibt dieses Signal nach dem SSL-Handshake aus, um anzuzeigen, dass beim Feststellen der Identität des Gegenübern ein oder mehrere Fehler aufgetreten sind. Die Fehler deuten in der Regel darauf hin, dass „ QWebSocket “ den Gegenüber nicht sicher identifizieren kann. Sofern keine Maßnahmen ergriffen werden, wird die Verbindung nach Ausgabe dieses Signals getrennt. Wenn Sie die Verbindung trotz der aufgetretenen Fehler fortsetzen möchten, müssen Sie die Funktion ` QWebSocket::ignoreSslErrors()` innerhalb eines Slots aufrufen, der mit diesem Signal verbunden ist. Wenn Sie zu einem späteren Zeitpunkt auf die Fehlerliste zugreifen müssen, können Sie die Funktion `sslErrors()` (ohne Argumente) aufrufen.
errors enthält einen oder mehrere Fehler, die „ QWebSocket “ daran hindern, die Identität des Gegenübers zu überprüfen.
Hinweis: Sie können ` Qt::QueuedConnection ` nicht verwenden, wenn Sie eine Verbindung zu diesem Signal herstellen, da der Aufruf von ` QWebSocket::ignoreSslErrors()` sonst keine Wirkung zeigt.
QAbstractSocket::SocketState QWebSocket::state() const
Gibt den aktuellen Status des Sockets zurück.
[signal] void QWebSocket::stateChanged(QAbstractSocket::SocketState state)
Dieses Signal wird immer dann ausgelöst, wenn sich der Zustand von „ QWebSocket “ ändert. Der Parameter „ state “ gibt den neuen Zustand an.
Hinweis: „ QAbstractSocket::ConnectedState “ wird ausgegeben, nachdem der Handshake mit dem Server erfolgreich war.
QAbstractSocket::SocketState ist kein registrierter Metatyp, daher müssen Sie ihn bei Verbindungen in der Warteschlange mit Q_REGISTER_METATYPE() und qRegisterMetaType() registrieren.
Siehe auch ` state()`.
[since 6.4] QString QWebSocket::subprotocol() const
Gibt das verwendete WebSocket-Protokoll zurück.
Diese Funktion wurde in Qt 6.4 eingeführt.
[signal] void QWebSocket::textFrameReceived(const QString &frame, bool isLastFrame)
Dieses Signal wird immer dann ausgegeben, wenn ein Text-Frame empfangen wird. Das „ frame “ enthält die Daten, und „ isLastFrame “ gibt an, ob es sich um den letzten Frame der gesamten Nachricht handelt.
Dieses Signal kann verwendet werden, um große Nachrichten Frame für Frame zu verarbeiten, anstatt auf das Eintreffen der vollständigen Nachricht zu warten.
Siehe auch binaryFrameReceived().
[signal] void QWebSocket::textMessageReceived(const QString &message)
Dieses Signal wird immer dann ausgegeben, wenn eine Textnachricht empfangen wird. Die Variable „ message “ enthält den empfangenen Text.
Siehe auch binaryMessageReceived().
QWebSocketProtocol::Version QWebSocket::version() const
Gibt die Version zurück, die der Socket derzeit verwendet.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.