QWebSocket Class
Implementiert einen TCP-Socket, der das WebSocket-Protokoll verwendet. Mehr...
Header: | #include <QWebSocket> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS WebSockets) target_link_libraries(mytarget PRIVATE Qt6::WebSockets) |
qmake: | QT += websockets |
Vererbungen: | 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 Mitglieder
quint64 | maxIncomingFrameSize() |
quint64 | maxIncomingMessageSize() |
quint64 | maxOutgoingFrameSize() |
Detaillierte Beschreibung
WebSockets ist eine Webtechnologie, die Vollduplex-Kommunikationskanäle über eine einzige TCP-Verbindung bereitstellt. Das WebSocket-Protokoll wurde von der IETF als RFC 6455 im Jahr 2011 standardisiert. QWebSocket kann sowohl in einer Client-Anwendung als auch in einer Server-Anwendung verwendet werden.
Diese Klasse wurde nach dem Vorbild von QAbstractSocket entwickelt.
QWebSocket unterstützt derzeit keine WebSocket Extensions.
QWebSocket unterstützt nur Version 13 des WebSocket-Protokolls, wie es in RFC 6455 beschrieben ist.
Hinweis: Einige Proxys verstehen bestimmte HTTP-Header nicht, die während eines WebSocket-Handshakes verwendet werden. In diesem Fall schlagen unsichere WebSocket-Verbindungen fehl. Die beste Möglichkeit, dieses Problem zu umgehen, ist die Verwendung von WebSocket über eine sichere Verbindung.
Warnung: Um Masken zu erzeugen, verwendet diese Implementierung von WebSockets die einigermaßen sichere Funktion QRandomGenerator::global()->generate(). Weitere Informationen über die 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 obigen Dokument genannten Angriffe ist die Verwendung von QWebSocket über eine sichere Verbindung(wss://). Generell sollten Sie immer darauf achten, dass Skripte von Drittanbietern keinen Zugriff auf einen QWebSocket in Ihrer Anwendung haben.
Siehe auch QAbstractSocket, QTcpSocket, und QWebSocket Client Beispiel.
Dokumentation der Mitgliedsfunktionen
[explicit]
QWebSocket::QWebSocket(const QString &origin = QString(), QWebSocketProtocol::Version version = QWebSocketProtocol::VersionLatest, QObject *parent = nullptr)
Erzeugt einen neuen QWebSocket mit dem angegebenen origin, dem version des zu verwendenden Protokolls und parent.
Die origin des Clients ist wie in RFC 6454 angegeben. (Die origin ist für Nicht-Webbrowser-Clients nicht erforderlich (siehe RFC 6455)). Die origin darf keine Neuzeilenzeichen enthalten, da sonst die Verbindung während der Handshake-Phase sofort abgebrochen wird.
Hinweis: Derzeit wird nur V13(RFC 6455) unterstützt.
[override virtual noexcept]
QWebSocket::~QWebSocket()
Zerstört die QWebSocket. Schließt den Socket, falls er noch offen ist, und gibt alle verwendeten Ressourcen frei.
void QWebSocket::abort()
Bricht den aktuellen Socket ab und setzt den Socket zurück. Im Gegensatz zu close() schließt diese Funktion den Socket sofort und verwirft alle anstehenden Daten im Schreibpuffer.
[signal]
void QWebSocket::aboutToClose()
Dieses Signal wird ausgegeben, wenn der Socket kurz vor dem Schließen steht. Schalten Sie dieses Signal ein, wenn Sie Operationen durchführen müssen, bevor der Socket geschlossen wird (z. B. wenn Sie Daten in einem separaten Puffer haben, die in 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 sendet dieses Signal, wenn eine Warnmeldung von einer Gegenstelle eingegangen ist. level gibt an, ob es sich um eine schwerwiegende oder um eine Warnung handelt. type ist der Code, der erklärt, warum die Warnmeldung gesendet wurde. Wenn eine textuelle Beschreibung der Warnmeldung verfügbar ist, wird sie in description angegeben.
Hinweis: Das Signal dient hauptsächlich zu Informations- und Debugging-Zwecken und erfordert keine Behandlung in der Anwendung. Wenn der Alarm fatal war, wird das zugrundeliegende Backend ihn behandeln und die Verbindung schließen.
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 beschreibt, ob es sich um eine Warnung oder einen schwerwiegenden Fehler handelt. type gibt den Code der Warnmeldung an. Wenn eine textuelle Beschreibung der Warnmeldung verfügbar ist, wird sie in description angegeben.
Hinweis: Dieses Signal hat hauptsächlich informativen Charakter und kann zu Debugging-Zwecken verwendet werden; normalerweise erfordert es keine Aktionen 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 ausgesendet, wenn der Server eine Authentifizierung verlangt. Das Objekt authenticator muss dann mit den erforderlichen Angaben ausgefüllt werden, um die Authentifizierung zu ermöglichen und die Verbindung fortzusetzen.
Wenn Sie wissen, dass der Server möglicherweise eine Authentifizierung verlangt, können Sie den Benutzernamen und das Kennwort auf dem anfänglichen QUrl festlegen, indem Sie QUrl::setUserName und QUrl::setPassword verwenden. QWebSocket wird trotzdem einmal versuchen, eine Verbindung herzustellen, ohne die bereitgestellten Anmeldedaten zu verwenden.
Hinweis: Es ist nicht möglich, eine QueuedConnection zu verwenden, um sich mit diesem Signal zu verbinden, da die Verbindung fehlschlägt, wenn der Authenticator nicht mit neuen Informationen gefüllt ist, wenn das Signal zurückkehrt.
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 Rahmen empfangen wird. frame enthält die Daten und isLastFrame zeigt an, ob es sich um den letzten Frame der vollständigen Nachricht handelt.
Dieses Signal kann verwendet werden, um große Nachrichten Frame für Frame zu verarbeiten, anstatt auf das Eintreffen der kompletten 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 message enthält die empfangenen Bytes.
Siehe auch textMessageReceived().
qint64 QWebSocket::bytesToWrite() const
Gibt die Anzahl der Bytes zurück, die darauf warten, geschrieben zu werden. Die Bytes werden geschrieben, wenn die Kontrolle an die Ereignisschleife zurückgeht oder wenn flush() aufgerufen wird.
Siehe auch flush.
[signal]
void QWebSocket::bytesWritten(qint64 bytes)
Dieses Signal wird jedes Mal ausgegeben, wenn eine Nutzlast an Daten in den Socket geschrieben wurde. Das Argument bytes wird auf die Anzahl der Bytes gesetzt, die in diese Nutzlast geschrieben wurden.
Hinweis: Dieses Signal hat sowohl für sichere als auch für unsichere WebSockets die gleiche Bedeutung. Im Gegensatz zu QSslSocket wird bytesWritten() nur ausgegeben, 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 mit der angegebenen Adresse closeCode und reason ordnungsgemäß.
Alle Daten im Schreibpuffer werden geleert, bevor der Socket geschlossen wird. closeCode ist eine QWebSocketProtocol::CloseCode, die den Grund für das Schließen angibt, und reason beschreibt den Grund für das Schließen detaillierter. Alle Kontrollrahmen, 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 es abgeschnitten.
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 gesendet, wenn eine Verbindung erfolgreich aufgebaut wurde. Eine Verbindung ist erfolgreich aufgebaut, wenn der Socket verbunden ist und der Handshake erfolgreich war.
Siehe auch open() und disconnected().
[since 6.2]
void QWebSocket::continueInterruptedHandshake()
Wenn eine Anwendung einen Handshake auch nach Erhalt des Signals handshakeInterruptedOnError() abschließen möchte, muss sie diese Funktion aufrufen. Dieser Aufruf muss von einer Slot-Funktion aus erfolgen, die mit dem Signal verbunden 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 ausgegeben, wenn die Verbindung zum Socket unterbrochen 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, wenn ein Fehler aufgetreten ist.
Der Parameter error beschreibt den Typ des aufgetretenen Fehlers.
QAbstractSocket::SocketError ist kein registrierter Metatyp, daher müssen Sie es für Warteschlangenverbindungen 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 menschenlesbare Beschreibung des letzten 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 Netzwerksocket, 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 sofort mit dem Senden von gepufferten Daten beginnen 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 an die Ereignisschleife zurückgeht.
[signal, since 6.2]
void QWebSocket::handshakeInterruptedOnError(const QSslError &error)
QWebSocket gibt dieses Signal aus, wenn ein Fehler bei der Zertifikatsüberprüfung gefunden wurde und wenn die frühzeitige Fehlerberichterstattung in QSslConfiguration aktiviert wurde. Von einer Anwendung wird erwartet, dass sie die error überprüft und entscheidet, ob sie den Handshake fortsetzen oder abbrechen und eine Warnmeldung an die Gegenstelle senden will. 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 wollen, wenn während der Handshake-Phase Fehler auftreten, müssen Sie diesen Slot entweder von einem Slot aus aufrufen, der mit sslErrors() verbunden ist, oder vor der Handshake-Phase. Wenn Sie diesen Slot nicht aufrufen, entweder als Reaktion auf Fehler oder vor dem Handshake, wird die Verbindung nach der Ausgabe des Signals sslErrors() abgebrochen.
Warnung: Lassen Sie den Benutzer immer die vom Signal sslErrors() gemeldeten Fehler überprüfen, und rufen Sie diese Methode nur auf, wenn der Benutzer bestätigt, dass der Vorgang in Ordnung ist. Wenn unerwartete Fehler auftreten, sollte die Verbindung abgebrochen werden. Der Aufruf dieser Methode, ohne die tatsächlichen Fehler zu prüfen, stellt höchstwahrscheinlich ein Sicherheitsrisiko für Ihre Anwendung dar. Verwenden Sie sie mit großer Vorsicht!
Siehe auch sslErrors(), QSslSocket::ignoreSslErrors(), und QNetworkReply::ignoreSslErrors().
void QWebSocket::ignoreSslErrors(const QList<QSslError> &errors)
Dies ist eine überladene Funktion.
Mit dieser Methode wird QWebSocket angewiesen, die in errors angegebenen Fehler zu ignorieren.
Beachten Sie, dass Sie das erwartete Zertifikat im SSL-Fehler festlegen können: Wenn Sie zum Beispiel eine Verbindung zu einem Server herstellen wollen, der ein selbstsigniertes Zertifikat verwendet, sollten Sie den folgenden Ausschnitt berücksichtigen:
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")));
Bei mehreren Aufrufen dieser Funktion wird die Liste der Fehler, die bei früheren Aufrufen übergeben wurden, ersetzt. Sie können die Liste der Fehler, die Sie ignorieren möchten, löschen, indem Sie diese Funktion mit einer leeren Liste aufrufen.
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 Anschluss 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 request.
Die request url wird zum Öffnen der WebSocket-Verbindung verwendet. Die in der Anfrage vorhandenen Header werden zusammen mit den für den WebSocket-Handshake benötigten Headern in der Upgrade-Anfrage an den Server gesendet.
[slot]
void QWebSocket::open(const QUrl &url)
Öffnet eine WebSocket-Verbindung unter Verwendung der angegebenen url.
Wenn die URL Zeilenumbrüche (\r\n) enthält, wird das Fehlersignal mit QAbstractSocket::ConnectionRefusedError als Fehlertyp ausgegeben.
[slot, since 6.4]
void QWebSocket::open(const QNetworkRequest &request, const QWebSocketHandshakeOptions &options)
Öffnet eine WebSocket-Verbindung unter Verwendung der angegebenen request und options.
Die URL request wird zum Öffnen der WebSocket-Verbindung verwendet. Die in der Anfrage vorhandenen Header werden zusammen mit den für den WebSocket-Handshake benötigten 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.
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 url und options.
Wenn die URL Zeilenumbrüche (\r\n) enthält, wird das Fehlersignal mit QAbstractSocket::ConnectionRefusedError als Fehlertyp ausgegeben.
Zusätzliche Optionen für den WebSocket-Handshake wie z.B. Subprotokolle können in options angegeben werden.
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 mehrmals während des SSL-Handshakes aussenden, bevor die Verschlüsselung aufgebaut ist, um anzuzeigen, dass bei der Feststellung der Identität der Gegenstelle ein Fehler aufgetreten ist. Die error ist in der Regel ein Hinweis darauf, dass QWebSocket nicht in der Lage ist, die Gegenstelle sicher zu identifizieren.
Dieses Signal gibt Ihnen einen frühen Hinweis darauf, dass etwas nicht in Ordnung ist. Wenn Sie eine Verbindung zu diesem Signal herstellen, können Sie manuell entscheiden, ob Sie die Verbindung innerhalb des angeschlossenen Slots abbauen wollen, bevor der Handshake abgeschlossen ist. Wenn keine Maßnahme ergriffen wird, fährt QWebSocket mit der Ausgabe von QWebSocket::sslErrors() fort.
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch sslErrors().
[slot]
void QWebSocket::ping(const QByteArray &payload = QByteArray())
Pingt den Server an, um anzuzeigen, dass die Verbindung noch besteht. Zusätzliche payload können zusammen mit der Ping-Nachricht gesendet werden.
Die Größe von payload darf nicht größer als 125 sein. Ist sie größer, wird die payload auf 125 Byte gekürzt.
Hinweis: QWebSocket und QWebSocketServer verarbeiten Ping-Anfragen intern, d.h. sie senden automatisch eine Ping-Antwort an die Gegenstelle zurück.
Siehe auch pong().
[signal]
void QWebSocket::pong(quint64 elapsedTime, const QByteArray &payload)
Wird ausgesendet, wenn eine Pong-Nachricht als Antwort auf einen vorangegangenen Ping empfangen wird. elapsedTime enthält die Roundtrip-Zeit in Millisekunden und payload 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-Ciphersuite ausgehandelt wird und somit eine PSK-Authentifizierung erforderlich ist.
Bei der Verwendung von PSK muss der Client dem Server eine gültige Identität und einen gültigen Pre-Shared Key senden, 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 Bedürfnissen ausfüllen.
Hinweis: Das Ignorieren dieses Signals oder die Nichtbereitstellung der erforderlichen Anmeldeinformationen führt zum Scheitern des Handshakes und damit zum Abbruch der Verbindung.
Hinweis: Das Objekt authenticator ist Eigentum des Websockets 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 ein proxy verwendet wird, das eine Authentifizierung erfordert. Das authenticator Objekt kann dann mit den erforderlichen Details ausgefü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 der Authenticator nicht mit neuen Informationen ausgefüllt wurde, wenn das Signal zurückkehrt.
Siehe auch QAuthenticator und QNetworkProxy.
qint64 QWebSocket::readBufferSize() const
Gibt die Größe des Lesepuffers, der vom Socket verwendet wird, in Bytes zurück.
Siehe auch setReadBufferSize().
[signal]
void QWebSocket::readChannelFinished()
Dieses Signal wird ausgesendet, wenn der Eingangsstrom (Lesestrom) in diesem Gerät geschlossen wird. Es wird ausgesendet, 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 wird.
QUrl QWebSocket::requestUrl() const
Gibt die URL zurück, mit der der Socket verbunden ist oder sich verbinden wird.
QString QWebSocket::resourceName() const
Gibt den Namen der Ressource zurück, auf die gerade zugegriffen wird.
void QWebSocket::resume()
Setzt die Datenübertragung auf dem Socket fort. Diese Methode sollte nur verwendet werden, nachdem der Socket so eingestellt 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äre Nachricht und gibt die Anzahl der tatsächlich gesendeten Bytes zurück.
Siehe auch sendTextMessage().
qint64 QWebSocket::sendTextMessage(const QString &message)
Sendet die angegebene message über den Socket als Textnachricht und gibt die Anzahl der tatsächlich gesendeten Bytes zurück.
Siehe auch sendBinaryMessage().
void QWebSocket::setMaskGenerator(const QMaskGenerator *maskGenerator)
Setzt den Generator, der für die Erstellung von Masken verwendet werden soll, auf maskGenerator. Der Standardgenerator QWebSocket kann durch Angabe von nullptr zurückgesetzt werden. Der Maskengenerator kann jederzeit geändert werden, auch während die Verbindung geöffnet ist.
Siehe auch maskGenerator().
void QWebSocket::setMaxAllowedIncomingFrameSize(quint64 maxAllowedIncomingFrameSize)
Legt die maximal zulässige Größe eines eingehenden Websocket-Frames auf maxAllowedIncomingFrameSize fest. Überschreitet ein eingehender Frame diese Grenze, wird die Verbindung zur Gegenstelle getrennt. Der akzeptierte Bereich liegt zwischen 0 und maxIncomingFrameSize(), der Standardwert ist maxIncomingFrameSize(). Der Zweck dieser Funktion ist es, die Erschöpfung 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. Überschreitet eine eingehende Nachricht diese Grenze, wird die Verbindung zur Gegenstelle getrennt. Der akzeptierte Bereich liegt zwischen 0 und maxIncomingMessageSize(), der Standardwert ist maxIncomingMessageSize(). Der Zweck dieser Funktion ist es, die Erschöpfung des virtuellen Speichers zu vermeiden.
Siehe auch maxAllowedIncomingMessageSize().
void QWebSocket::setOutgoingFrameSize(quint64 outgoingFrameSize)
Setzt die maximale Größe eines ausgehenden Websocket-Frames auf outgoingFrameSize. Der akzeptierte Bereich liegt zwischen 0 und maxOutgoingFrameSize(), Standard ist 512kB. Der Zweck dieser Funktion ist die Anpassung an die maximal zulässige Framegröße des Empfängers.
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(). Wenn diese Option auf PauseOnSslErrors gesetzt ist, wird die Datenübertragung auf dem Socket angehalten und muss durch den Aufruf von resume() explizit wieder aktiviert werden. Standardmäßig ist diese Option auf PauseNever gesetzt. Diese Option muss aufgerufen werden, bevor eine Verbindung zum Server hergestellt wird, andernfalls führt sie zu einem undefinierten Verhalten.
Siehe auch pauseMode() und resume().
void QWebSocket::setProxy(const QNetworkProxy &networkProxy)
Setzt den Proxy auf networkProxy
Siehe auch proxy().
void QWebSocket::setReadBufferSize(qint64 size)
Setzt die Größe des internen Lesepuffers von QWebSocket auf size Bytes.
Wenn die Puffergröße auf eine bestimmte Größe begrenzt ist, wird QWebSocket nicht mehr als diese Datenmenge puffern. Ausnahmsweise bedeutet eine Puffergröße von 0, 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 (z. B. in einer Echtzeit-Streaming-Anwendung) oder wenn Sie Ihr Socket davor schützen wollen, zu viele Daten zu empfangen, was dazu führen kann, dass Ihrer Anwendung der Speicher ausgeht.
Siehe auch readBufferSize().
void QWebSocket::setSslConfiguration(const QSslConfiguration &sslConfiguration)
Setzt die SSL-Konfiguration des Sockets auf den Inhalt von sslConfiguration.
Diese Funktion setzt das lokale Zertifikat, die Chiffren, den privaten Schlüssel und die CA-Zertifikate auf die in sslConfiguration gespeicherten. Es ist nicht möglich, die SSL-Status-bezogenen Felder zu setzen.
Siehe auch sslConfiguration().
QSslConfiguration QWebSocket::sslConfiguration() const
Gibt den SSL-Konfigurationsstatus des Sockets zurück. Die Standard-SSL-Konfiguration eines Sockets ist die Verwendung der Standard-Chiffren, Standard-CA-Zertifikate, kein lokaler privater Schlüssel oder Zertifikat. Die SSL-Konfiguration enthält auch Felder, die sich mit der Zeit ohne Ankü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 ein oder mehrere Fehler bei der Feststellung der Identität der Gegenstelle aufgetreten sind. Die Fehler sind in der Regel ein Hinweis darauf, dass QWebSocket nicht in der Lage ist, die Gegenstelle sicher zu identifizieren. Wenn keine Maßnahmen ergriffen werden, wird die Verbindung nach dem Ausgeben dieses Signals abgebrochen. Wenn Sie die Verbindung trotz der aufgetretenen Fehler fortsetzen wollen, müssen Sie QWebSocket::ignoreSslErrors() aus einem mit diesem Signal verbundenen Slot heraus aufrufen. Wenn Sie zu einem späteren Zeitpunkt auf die Fehlerliste zugreifen müssen, können Sie sslErrors() (ohne Argumente) aufrufen.
errors enthält einen oder mehrere Fehler, die QWebSocket daran hindern, die Identität der Gegenstelle zu überprüfen.
Hinweis: Sie können Qt::QueuedConnection nicht verwenden, wenn Sie eine Verbindung zu diesem Signal herstellen, da sonst der Aufruf von QWebSocket::ignoreSslErrors() keine Wirkung hat.
QAbstractSocket::SocketState QWebSocket::state() const
Gibt den aktuellen Zustand des Sockets zurück.
[signal]
void QWebSocket::stateChanged(QAbstractSocket::SocketState state)
Dieses Signal wird ausgesendet, wenn sich der Zustand von QWebSocket ändert. Der Parameter state ist der neue Zustand.
Hinweis: QAbstractSocket::ConnectedState wird ausgesendet, nachdem der Handshake mit dem Server erfolgreich war.
QAbstractSocket::SocketState ist kein registrierter Metatyp, daher müssen Sie ihn für Warteschlangenverbindungen 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 Textrahmen empfangen wird. frame enthält die Daten und isLastFrame zeigt an, ob es sich um den letzten Rahmen der vollständigen Nachricht handelt.
Dieses Signal kann verwendet werden, um große Nachrichten Frame für Frame zu verarbeiten, anstatt auf das Eintreffen der kompletten Nachricht zu warten.
Siehe auch binaryFrameReceived().
[signal]
void QWebSocket::textMessageReceived(const QString &message)
Dieses Signal wird ausgegeben, wenn eine Textnachricht empfangen wird. Die Datei message enthält den empfangenen Text.
Siehe auch binaryMessageReceived().
QWebSocketProtocol::Version QWebSocket::version() const
Gibt die Version zurück, die der Socket gerade verwendet.
© 2025 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.