- class QWebSocket#
Implements a TCP socket that talks the WebSocket protocol. More…
Synopsis#
Methods#
def
__init__()
def
abort()
def
bytesToWrite()
def
closeCode()
def
closeReason()
def
error()
def
errorString()
def
flush()
def
isValid()
def
localAddress()
def
localPort()
def
maskGenerator()
def
origin()
def
pauseMode()
def
peerAddress()
def
peerName()
def
peerPort()
def
proxy()
def
readBufferSize()
def
request()
def
requestUrl()
def
resourceName()
def
resume()
def
setPauseMode()
def
setProxy()
def
state()
def
subprotocol()
def
version()
Slots#
Signals#
def
aboutToClose()
def
alertReceived()
def
alertSent()
def
bytesWritten()
def
connected()
def
disconnected()
def
error()
def
errorOccurred()
def
pong()
def
sslErrors()
def
stateChanged()
Static functions#
Note
This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE
Detailed Description#
WebSockets is a web technology providing full-duplex communications channels over a single TCP connection. The WebSocket protocol was standardized by the IETF as RFC 6455 in 2011.
QWebSocket
can both be used in a client application and server application.This class was modeled after QAbstractSocket.
QWebSocket
currently does not support WebSocket Extensions .QWebSocket
only supports version 13 of the WebSocket protocol, as outlined in RFC 6455 .Note
Some proxies do not understand certain HTTP headers used during a WebSocket handshake. In that case, non-secure WebSocket connections fail. The best way to mitigate against this problem is to use WebSocket over a secure connection.
Warning
To generate masks, this implementation of WebSockets uses the reasonably secure QRandomGenerator::global()->generate() function. For more information about the importance of good masking, see “Talking to Yourself for Fun and Profit” by Lin-Shung Huang et al . The best measure against attacks mentioned in the document above, is to use
QWebSocket
over a secure connection (wss://). In general, always be careful to not have 3rd party script access to aQWebSocket
in your application.See also
- __init__([origin=""[, version=QWebSocketProtocol.VersionLatest[, parent=None]]])#
Creates a new
QWebSocket
with the givenorigin
, theversion
of the protocol to use andparent
.The
origin
of the client is as specified in RFC 6454 . (Theorigin
is not required for non-web browser clients (see RFC 6455 )). Theorigin
may not contain new line characters, otherwise the connection will be aborted immediately during the handshake phase.Note
Currently only V13 ( RFC 6455 ) is supported
- abort()#
Aborts the current socket and resets the socket. Unlike
close()
, this function immediately closes the socket, discarding any pending data in the write buffer.- aboutToClose()#
This signal is emitted when the socket is about to close. Connect this signal if you have operations that need to be performed before the socket closes (e.g., if you have data in a separate buffer that needs to be written to the device).
See also
- alertReceived(level, type, description)#
- Parameters:
level –
AlertLevel
type –
AlertType
description – str
QWebSocket
emits this signal if an alert message was received from a peer.level
tells if the alert was fatal or it was a warning.type
is the code explaining why the alert was sent. When a textual description of the alert message is available, it is supplied indescription
.Note
The signal is mostly for informational and debugging purposes and does not require any handling in the application. If the alert was fatal, underlying backend will handle it and close the connection.
- alertSent(level, type, description)#
- Parameters:
level –
AlertLevel
type –
AlertType
description – str
QWebSocket
emits this signal if an alert message was sent to a peer.level
describes if it was a warning or a fatal error.type
gives the code of the alert message. When a textual description of the alert message is available, it is supplied indescription
.Note
This signal is mostly informational and can be used for debugging purposes, normally it does not require any actions from the application.
- authenticationRequired(authenticator)#
- Parameters:
authenticator –
QAuthenticator
This signal is emitted when the server requires authentication. The
authenticator
object must then be filled in with the required details to allow authentication and continue the connection.If you know that the server may require authentication, you can set the username and password on the initial QUrl, using QUrl::setUserName and QUrl::setPassword.
QWebSocket
will still try to connect once without using the provided credentials.Note
It is not possible to use a QueuedConnection to connect to this signal, as the connection will fail if the authenticator has not been filled in with new information when the signal returns.
See also
- binaryFrameReceived(frame, isLastFrame)#
- Parameters:
frame –
QByteArray
isLastFrame – bool
This signal is emitted whenever a binary frame is received. The
frame
contains the data andisLastFrame
indicates whether this is the last frame of the complete message.This signal can be used to process large messages frame by frame, instead of waiting for the complete message to arrive.
See also
- binaryMessageReceived(message)#
- Parameters:
message –
QByteArray
This signal is emitted whenever a binary message is received. The
message
contains the received bytes.See also
- bytesToWrite()#
- Return type:
int
Returns the number of bytes that are waiting to be written. The bytes are written when control goes back to the event loop or when
flush()
is called.See also
- bytesWritten(bytes)#
- Parameters:
bytes – int
This signal is emitted every time a payload of data has been written to the socket. The
bytes
argument is set to the number of bytes that were written in this payload.Note
This signal has the same meaning both for secure and non-secure WebSockets. As opposed to QSslSocket, bytesWritten() is only emitted when encrypted data is effectively written (see QSslSocket::encryptedBytesWritten()).
See also
- close([closeCode=QWebSocketProtocol.CloseCodeNormal[, reason=""]])#
- Parameters:
closeCode –
CloseCode
reason – str
Gracefully closes the socket with the given
closeCode
andreason
.Any data in the write buffer is flushed before the socket is closed. The
closeCode
is aCloseCode
indicating the reason to close, andreason
describes the reason of the closure more in detail. All control frames, including the Close frame, are limited to 125 bytes. Since two of these are used forcloseCode
the maximum length ofreason
is 123! Ifreason
exceeds this limit it will be truncated.Returns the code indicating why the socket was closed.
See also
- closeReason()#
- Return type:
str
Returns the reason why the socket was closed.
See also
- connected()#
Emitted when a connection is successfully established. A connection is successfully established when the socket is connected and the handshake was successful.
See also
- continueInterruptedHandshake()#
If an application wants to conclude a handshake even after receiving
handshakeInterruptedOnError()
signal, it must call this function. This call must be done from a slot function attached to the signal. The signal-slot connection must be direct.- disconnected()#
Emitted when the socket is disconnected.
See also
- error()#
- Return type:
Returns the type of error that last occurred
See also
- error(error)
- Parameters:
error –
SocketError
Note
This function is deprecated.
Use
errorOccurred
(QAbstractSocket::SocketError error) instead.- errorOccurred(error)#
- Parameters:
error –
SocketError
This signal is emitted after an error occurred.
The
error
parameter describes the type of error that occurred.QAbstractSocket::SocketError is not a registered metatype, so for queued connections, you will have to register it with Q_DECLARE_METATYPE() and qRegisterMetaType().
See also
- errorString()#
- Return type:
str
Returns a human-readable description of the last error that occurred
See also
- flush()#
- Return type:
bool
This function writes as much as possible from the internal write buffer to the underlying network socket, without blocking. If any data was written, this function returns true; otherwise false is returned. Call this function if you need
QWebSocket
to start sending buffered data immediately. The number of bytes successfully written depends on the operating system. In most cases, you do not need to call this function, becauseQWebSocket
will start sending data automatically once control goes back to the event loop.QWebSocket
emits this signal if a certificate verification error was found and if early error reporting was enabled in QSslConfiguration. An application is expected to inspect theerror
and decide if it wants to continue the handshake, or abort it and send an alert message to the peer. The signal-slot connection must be direct.- handshakeOptions()#
- Return type:
Returns the handshake options that were used to open this socket.
- ignoreSslErrors()#
This slot tells
QWebSocket
to ignore errors duringQWebSocket
‘s handshake phase and continue connecting. If you want to continue with the connection even if errors occur during the handshake phase, then you must call this slot, either from a slot connected tosslErrors()
, or before the handshake phase. If you don’t call this slot, either in response to errors or before the handshake, the connection will be dropped after thesslErrors()
signal has been emitted.Warning
Be sure to always let the user inspect the errors reported by the
sslErrors()
signal, and only call this method upon confirmation from the user that proceeding is ok. If there are unexpected errors, the connection should be aborted. Calling this method without inspecting the actual errors will most likely pose a security risk for your application. Use it with great care!See also
sslErrors()
ignoreSslErrors()
- ignoreSslErrors(errors)
- Parameters:
errors – .list of QSslError
Warning
This section contains snippets that were automatically translated from C++ to Python and may contain errors.
This is an overloaded function.
This method tells
QWebSocket
to ignore the errors given inerrors
.Note that you can set the expected certificate in the SSL error: If, for instance, you want to connect to a server that uses a self-signed certificate, consider the following snippet:
cert = QSslCertificate.fromPath("server-certificate.pem") error = QSslError(QSslError.SelfSignedCertificate, cert.at(0)) expectedSslErrors = QList() expectedSslErrors.append(error) socket = QWebSocket() socket.ignoreSslErrors(expectedSslErrors) socket.open(QUrl("wss://myserver.at.home"))
Multiple calls to this function will replace the list of errors that were passed in previous calls. You can clear the list of errors you want to ignore by calling this function with an empty list.
See also
- isValid()#
- Return type:
bool
Returns
true
if the socket is ready for reading and writing; otherwise returnsfalse
.- localAddress()#
- Return type:
Returns the local address
- localPort()#
- Return type:
int
Returns the local port
- maskGenerator()#
- Return type:
Returns the mask generator that is currently used by this
QWebSocket
.See also
- maxAllowedIncomingFrameSize()#
- Return type:
int
Returns the maximum allowed size of an incoming websocket frame.
See also
- maxAllowedIncomingMessageSize()#
- Return type:
int
Returns the maximum allowed size of an incoming websocket message.
See also
- static maxIncomingFrameSize()#
- Return type:
int
Returns the maximum supported size of an incoming websocket frame for this websocket implementation.
- static maxIncomingMessageSize()#
- Return type:
int
Returns the maximum supported size of an incoming websocket message for this websocket implementation.
- static maxOutgoingFrameSize()#
- Return type:
int
Returns the maximum supported size of an outgoing websocket frame for this websocket implementation.
- open(url, options)#
- Parameters:
url –
QUrl
options –
QWebSocketHandshakeOptions
Opens a WebSocket connection using the given
url
andoptions
.If the url contains newline characters (\r\n), then the error signal will be emitted with QAbstractSocket::ConnectionRefusedError as error type.
Additional options for the WebSocket handshake such as subprotocols can be specified in
options
.- open(url)
- Parameters:
url –
QUrl
Opens a WebSocket connection using the given
url
.If the url contains newline characters (\r\n), then the error signal will be emitted with QAbstractSocket::ConnectionRefusedError as error type.
- open(request)
- Parameters:
request –
QNetworkRequest
Opens a WebSocket connection using the given
request
.The
request
url will be used to open the WebSocket connection. Headers present in the request will be sent to the server in the upgrade request, together with the ones needed for the websocket handshake.- open(request, options)
- Parameters:
request –
QNetworkRequest
options –
QWebSocketHandshakeOptions
Opens a WebSocket connection using the given
request
andoptions
.The
request
url will be used to open the WebSocket connection. Headers present in the request will be sent to the server in the upgrade request, together with the ones needed for the websocket handshake.Additional options for the WebSocket handshake such as subprotocols can be specified in
options
.- origin()#
- Return type:
str
Returns the current origin.
- outgoingFrameSize()#
- Return type:
int
Returns the maximum size of an outgoing websocket frame.
See also
Returns the pause mode of this socket
See also
- peerAddress()#
- Return type:
Returns the peer address
- peerName()#
- Return type:
str
Returns the peerName
- peerPort()#
- Return type:
int
Returns the peerport
QWebSocket
can emit this signal several times during the SSL handshake, before encryption has been established, to indicate that an error has occurred while establishing the identity of the peer. Theerror
is usually an indication thatQWebSocket
is unable to securely identify the peer.This signal provides you with an early indication when something’s wrong. By connecting to this signal, you can manually choose to tear down the connection from inside the connected slot before the handshake has completed. If no action is taken,
QWebSocket
will proceed to emittingsslErrors()
.See also
- ping([payload=QByteArray()])#
- Parameters:
payload –
QByteArray
Pings the server to indicate that the connection is still alive. Additional
payload
can be sent along the ping message.The size of the
payload
cannot be bigger than 125. If it is larger, thepayload
is clipped to 125 bytes.Note
QWebSocket
andQWebSocketServer
handles ping requests internally, which means they automatically send back a pong response to the peer.See also
- pong(elapsedTime, payload)#
- Parameters:
elapsedTime – int
payload –
QByteArray
Emitted when a pong message is received in reply to a previous ping.
elapsedTime
contains the roundtrip time in milliseconds andpayload
contains an optional payload that was sent with the ping.See also
- Parameters:
authenticator –
QSslPreSharedKeyAuthenticator
This signal is emitted if the SSL/TLS handshake negotiates a PSK ciphersuite, and therefore a PSK authentication is then required.
When using PSK, the client must send to the server a valid identity and a valid pre shared key, in order for the SSL handshake to continue. Applications can provide this information in a slot connected to this signal, by filling in the passed
authenticator
object according to their needs.Note
Ignoring this signal, or failing to provide the required credentials, will cause the handshake to fail, and therefore the connection to be aborted.
Note
The
authenticator
object is owned by the websocket and must not be deleted by the application.See also
preSharedKeyAuthenticationRequired()
- proxy()#
- Return type:
Returns the currently configured proxy
See also
- proxyAuthenticationRequired(proxy, pAuthenticator)#
- Parameters:
proxy –
QNetworkProxy
pAuthenticator –
QAuthenticator
This signal can be emitted when a
proxy
that requires authentication is used. Theauthenticator
object can then be filled in with the required details to allow authentication and continue the connection.Note
It is not possible to use a QueuedConnection to connect to this signal, as the connection will fail if the authenticator has not been filled in with new information when the signal returns.
See also
QAuthenticatorQNetworkProxy
- readBufferSize()#
- Return type:
int
Returns the size in bytes of the readbuffer that is used by the socket.
See also
- readChannelFinished()#
This signal is emitted when the input (reading) stream is closed in this device. It is emitted as soon as the closing is detected.
See also
- request()#
- Return type:
Returns the request that was or will be used to open this socket.
Returns the url the socket is connected to or will connect to.
- resourceName()#
- Return type:
str
Returns the name of the resource currently accessed.
- resume()#
Continues data transfer on the socket. This method should only be used after the socket has been set to pause upon notifications and a notification has been received. The only notification currently supported is
sslErrors()
. Calling this method if the socket is not paused results in undefined behavior.See also
- sendBinaryMessage(data)#
- Parameters:
data –
QByteArray
- Return type:
int
Sends the given
data
over the socket as a binary message and returns the number of bytes actually sent.See also
- sendTextMessage(message)#
- Parameters:
message – str
- Return type:
int
Sends the given
message
over the socket as a text message and returns the number of bytes actually sent.See also
- setMaskGenerator(maskGenerator)#
- Parameters:
maskGenerator –
QMaskGenerator
Sets the generator to use for creating masks to
maskGenerator
. The defaultQWebSocket
generator can be reset by supplying a nullptr. The mask generator can be changed at any time, even while the connection is open.See also
- setMaxAllowedIncomingFrameSize(maxAllowedIncomingFrameSize)#
- Parameters:
maxAllowedIncomingFrameSize – int
Sets the maximum allowed size of an incoming websocket frame to
maxAllowedIncomingFrameSize
. If an incoming frame exceeds this limit, the peer gets disconnected. The accepted range is between 0 andmaxIncomingFrameSize()
, default ismaxIncomingFrameSize()
. The purpose of this function is to avoid exhausting virtual memory.See also
- setMaxAllowedIncomingMessageSize(maxAllowedIncomingMessageSize)#
- Parameters:
maxAllowedIncomingMessageSize – int
Sets the maximum allowed size of an incoming websocket message to
maxAllowedIncomingMessageSize
. If an incoming message exceeds this limit, the peer gets disconnected. The accepted range is between 0 andmaxIncomingMessageSize()
, default ismaxIncomingMessageSize()
. The purpose of this function is to avoid exhausting virtual memory.See also
- setOutgoingFrameSize(outgoingFrameSize)#
- Parameters:
outgoingFrameSize – int
Sets the maximum size of an outgoing websocket frame to
outgoingFrameSize
. The accepted range is between 0 andmaxOutgoingFrameSize()
, default is 512kB. The purpose of this function is to adapt to the maximum allowed frame size of the receiver.See also
Controls whether to pause upon receiving a notification. The
pauseMode
parameter specifies the conditions in which the socket should be paused.The only notification currently supported is
sslErrors()
. If set to PauseOnSslErrors, data transfer on the socket will be paused and needs to be enabled explicitly again by callingresume()
. By default, this option is set to PauseNever. This option must be called before connecting to the server, otherwise it will result in undefined behavior.See also
- setProxy(networkProxy)#
- Parameters:
networkProxy –
QNetworkProxy
Sets the proxy to
networkProxy
See also
- setReadBufferSize(size)#
- Parameters:
size – int
Sets the size of
QWebSocket
‘s internal read buffer to besize
bytes.If the buffer size is limited to a certain size,
QWebSocket
won’t buffer more than this size of data. Exceptionally, a buffer size of 0 means that the read buffer is unlimited and all incoming data is buffered. This is the default. This option is useful if you only read the data at certain points in time (for example, in a real-time streaming application) or if you want to protect your socket against receiving too much data, which may eventually cause your application to run out of memory.See also
- setSslConfiguration(sslConfiguration)#
- Parameters:
sslConfiguration –
QSslConfiguration
Sets the socket’s SSL configuration to be the contents of
sslConfiguration
.This function sets the local certificate, the ciphers, the private key and the CA certificates to those stored in
sslConfiguration
. It is not possible to set the SSL-state related fields.See also
- sslConfiguration()#
- Return type:
Returns the socket’s SSL configuration state. The default SSL configuration of a socket is to use the default ciphers, default CA certificates, no local private key or certificate. The SSL configuration also contains fields that can change with time without notice.
See also
- sslErrors(errors)#
- Parameters:
errors – .list of QSslError
QWebSocket
emits this signal after the SSL handshake to indicate that one or more errors have occurred while establishing the identity of the peer. The errors are usually an indication thatQWebSocket
is unable to securely identify the peer. Unless any action is taken, the connection will be dropped after this signal has been emitted. If you want to continue connecting despite the errors that have occurred, you must callignoreSslErrors()
from inside a slot connected to this signal. If you need to access the error list at a later point, you can call sslErrors() (without arguments).errors
contains one or more errors that preventQWebSocket
from verifying the identity of the peer.Note
You cannot use Qt::QueuedConnection when connecting to this signal, or calling
ignoreSslErrors()
will have no effect.- state()#
- Return type:
Returns the current state of the socket.
- stateChanged(state)#
- Parameters:
state –
SocketState
This signal is emitted whenever
QWebSocket
‘s state changes. Thestate
parameter is the new state.Note
QAbstractSocket::ConnectedState is emitted after the handshake with the server has succeeded.
QAbstractSocket::SocketState is not a registered metatype, so for queued connections, you will have to register it with Q_REGISTER_METATYPE() and qRegisterMetaType().
See also
- subprotocol()#
- Return type:
str
Returns the used WebSocket protocol.
- textFrameReceived(frame, isLastFrame)#
- Parameters:
frame – str
isLastFrame – bool
This signal is emitted whenever a text frame is received. The
frame
contains the data andisLastFrame
indicates whether this is the last frame of the complete message.This signal can be used to process large messages frame by frame, instead of waiting for the complete message to arrive.
See also
- textMessageReceived(message)#
- Parameters:
message – str
This signal is emitted whenever a text message is received. The
message
contains the received text.See also
Returns the version the socket is currently using.