PySide6.QtWebSockets.QWebSocketServer¶
- class QWebSocketServer¶
实现一个基于WebSocket的服务器。更多…
概要¶
方法¶
def
__init__()def
close()def
error()def
errorString()def
isListening()def
listen()def
pauseAccepting()def
proxy()def
secureMode()def
serverAddress()def
serverName()def
serverPort()def
serverUrl()def
setProxy()def
setServerName()
虚拟方法¶
信号¶
def
acceptError()def
alertReceived()def
alertSent()def
closed()def
newConnection()def
serverError()def
sslErrors()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
它是仿照QTcpServer设计的,行为也相同。因此,如果你知道如何使用QTcpServer,你就知道如何使用
QWebSocketServer。这个类使得接受传入的WebSocket连接成为可能。你可以指定端口或让QWebSocketServer自动选择一个。你可以监听特定的地址或机器上的所有地址。调用listen()让服务器监听传入的连接。每当客户端连接到服务器时,就会发出
newConnection()信号。调用nextPendingConnection()以接受挂起的连接作为已连接的QWebSocket。该函数返回一个指向QWebSocket的指针,该指针处于QAbstractSocket::ConnectedState,您可以使用它与客户端进行通信。如果发生错误,
serverError()返回错误类型,并且可以调用errorString()来获取人类可读的错误描述。当监听连接时,服务器正在监听的地址和端口可以通过
serverAddress()和serverPort()获取。调用
close()会使QWebSocketServer停止监听传入的连接。QWebSocketServer目前不支持 WebSocket Extensions 。注意
在使用自签名证书时,Firefox bug 594502 阻止 Firefox 连接到安全的 WebSocket 服务器。要解决此问题,首先使用 HTTPS 浏览到安全的 WebSocket 服务器。FireFox 会指示证书无效。从这里开始,可以将证书添加到例外中。之后,安全的 WebSockets 连接应该可以正常工作。
QWebSocketServer仅支持 RFC 6455 中概述的 WebSocket 协议的第13版。为了避免拒绝服务,默认的连接握手超时时间为10秒,可以使用
setHandshakeTimeout()进行自定义。- class SslMode¶
指示服务器是通过wss(安全模式)还是ws(非安全模式)运行
常量
描述
QWebSocketServer.SecureMode
服务器在安全模式下运行(通过wss)
QWebSocketServer.NonSecureMode
服务器以非安全模式运行(通过ws)
- __init__(serverName, secureMode[, parent=None])¶
使用给定的
serverName构造一个新的QWebSocketServer。serverName将在HTTP握手阶段用于标识服务器。它可以为空,在这种情况下,不会向客户端发送服务器名称。secureMode参数指示服务器是通过wss(SecureMode)还是通过ws(NonSecureMode)运行。parent被传递给 QObject 构造函数。- acceptError(socketError)¶
- Parameters:
socketError –
SocketError
当接受新连接时发生错误时,会发出此信号。
socketError参数描述了发生的错误类型。- alertReceived(level, type, description)¶
- Parameters:
level –
AlertLeveltype –
AlertType描述 – str
QWebSocketServer如果从对等方接收到警报消息,则会发出此信号。level告诉警报是致命的还是警告。type是解释为什么发送警报的代码。当警报消息的文本描述可用时,它会在description中提供。注意
该信号主要用于信息和调试目的,不需要在应用程序中进行任何处理。如果警报是致命的,底层后端将处理它并关闭连接。
- alertSent(level, type, description)¶
- Parameters:
level –
AlertLeveltype –
AlertType描述 – str
QWebSocketServer如果向对等方发送了警报消息,则会发出此信号。level描述它是警告还是致命错误。type提供警报消息的代码。当警报消息的文本描述可用时,它会在description中提供。注意
此信号主要是信息性的,可用于调试目的,通常不需要应用程序采取任何操作。
- close()¶
关闭服务器。服务器将不再监听传入的连接。
- closed()¶
当服务器关闭其连接时,会发出此信号。
另请参阅
返回最后发生的错误的错误代码。如果没有发生错误,则返回
CloseCodeNormal。另请参阅
- errorString()¶
- Return type:
字符串
返回最近发生的错误的人类可读描述。如果没有发生错误,则返回空字符串。
另请参阅
- handleConnection(socket)¶
- Parameters:
socket –
QTcpSocket
将tcp
socket升级为websocket。QWebSocketServer对象将拥有该套接字对象的所有权,并在适当的时候删除它。QWebSocketServer如果在证书验证中发现error并且在 QSslConfiguration 中启用了早期错误报告,则会发出此信号。- handshakeTimeoutMS()¶
- Return type:
整数
返回新连接的握手超时时间,单位为毫秒。
默认是10秒。如果对等方使用更多时间来完成握手,他们的连接将被关闭。
另请参阅
setHandshakeTimeout()handshakeTimeout()- hasPendingConnections()¶
- Return type:
布尔
如果服务器有待处理的连接,则返回 true;否则返回 false。
- isListening()¶
- Return type:
布尔
如果服务器当前正在监听传入连接,则返回 true;否则返回 false。如果监听失败,
error()将返回原因。- listen([address=QHostAddress.Any[, port=0]])¶
- Parameters:
地址 –
QHostAddressport – int
- Return type:
布尔
告诉服务器在地址
address和端口port上监听传入的连接。如果port为 0,则自动选择一个端口。如果address是 QHostAddress::Any,服务器将在所有网络接口上监听。成功时返回 true;否则返回 false。
另请参阅
- maxPendingConnections()¶
- Return type:
整数
返回待处理接受连接的最大数量。默认值为30。
- nativeDescriptor()¶
- Return type:
qintptr
注意
此函数已弃用。
返回服务器用于监听传入指令的本机套接字描述符,如果服务器未在监听,则返回-1。如果服务器使用QNetworkProxy,返回的描述符可能无法与本机套接字函数一起使用。
- newConnection()¶
每次有新连接可用时都会发出此信号。
- nextPendingConnection()¶
- Return type:
返回下一个待处理的连接作为一个已连接的
QWebSocket对象。QWebSocketServer不会拥有返回的QWebSocket对象的所有权。调用者有责任在不再使用该对象时显式删除它,否则会发生内存泄漏。如果没有待处理的连接时调用此函数,则返回nullptr。注意:返回的
QWebSocket对象不能从另一个线程使用。- originAuthenticationRequired(pAuthenticator)¶
- Parameters:
pAuthenticator –
QWebSocketCorsAuthenticator
当请求新连接时,会发出此信号。连接到该信号的槽应指示是否允许源(可以通过origin()调用确定)在
authenticator对象中(通过发出setAllowed())。如果没有插槽连接到这个信号,默认情况下将接受所有来源。
注意
无法使用QueuedConnection连接到此信号,因为连接将始终成功。
- pauseAccepting()¶
暂停传入的新连接。排队的连接将保持在队列中。
另请参阅
QWebSocketServer在SSL握手期间,加密尚未建立之前,可以多次发出此信号,以指示在建立对等方身份时发生了错误。error通常表示QWebSocketServer无法安全地识别对等方。此信号在出现问题时为您提供早期指示。通过连接到此信号,您可以在握手完成之前手动选择从连接的槽内部断开连接。如果不采取任何行动,
QWebSocketServer将继续发出sslErrors()。另请参阅
- Parameters:
QWebSocketServer在协商PSK加密套件时发出此信号,因此随后需要PSK认证。使用PSK时,客户端必须向服务器发送有效的身份和有效的预共享密钥,以便SSL握手继续进行。应用程序可以通过根据其需求填充传递的
authenticator对象,在连接到该信号的槽中提供此信息。注意
忽略此信号,或未能提供所需的凭据,将导致握手失败,从而导致连接中止。
注意
authenticator对象由套接字拥有,应用程序不得删除它。另请参阅
preSharedKeyAuthenticationRequired()- proxy()¶
- Return type:
返回此服务器的网络代理。默认情况下使用 QNetworkProxy::DefaultProxy。
另请参阅
- resumeAccepting()¶
恢复接受新连接。
另请参阅
返回服务器正在运行的安全模式。
另请参阅
QWebSocketServer()SslMode- serverAddress()¶
- Return type:
如果服务器正在监听连接,则返回服务器的地址;否则返回 QHostAddress::Null。
另请参阅
当在WebSocket连接设置过程中发生错误时,会发出此信号。
closeCode参数描述了发生的错误类型另请参阅
- serverName()¶
- Return type:
字符串
返回在HTTP握手阶段使用的服务器名称。
另请参阅
- serverPort()¶
- Return type:
整数
如果服务器正在监听连接,则返回服务器的端口;否则返回0。
另请参阅
如果服务器正在监听连接,则返回客户端可用于连接到此服务器的URL。否则返回无效的URL。
- setHandshakeTimeout(msec)¶
- Parameters:
毫秒 – 整数
这是一个重载函数。
- setMaxPendingConnections(numConnections)¶
- Parameters:
numConnections – int
设置待处理接受连接的最大数量为
numConnections。WebSocketServer在调用nextPendingConnection()之前,将不会接受超过numConnections的传入连接。默认情况下,限制为30个待处理连接。QWebSocketServer将在达到最大连接数时发出带有CloseCodeAbnormalDisconnection关闭代码的error()信号。WebSocket 握手将失败,并且套接字将被关闭。- setNativeDescriptor(descriptor)¶
- Parameters:
描述符 –
qintptr- Return type:
布尔
注意
此函数已弃用。
设置此服务器在监听传入连接时应使用的套接字描述符为
socketDescriptor。如果套接字设置成功,则返回 true;否则返回 false。假设套接字处于监听状态。
- setProxy(networkProxy)¶
- Parameters:
networkProxy –
QNetworkProxy
将此服务器的显式网络代理设置为
networkProxy。要禁用代理的使用,请使用 QNetworkProxy::NoProxy 代理类型:
server->setProxy(QNetworkProxy::NoProxy);
另请参阅
- setServerName(serverName)¶
- Parameters:
serverName – str
将用于HTTP握手阶段的服务器名称设置为给定的
serverName。serverName可以为空,在这种情况下,将向客户端发送一个空的服务器名称。现有的已连接客户端不会收到此更改的通知,只有新连接的客户端会看到这个新名称。另请参阅
- setSocketDescriptor(socketDescriptor)¶
- Parameters:
socketDescriptor –
qintptr- Return type:
布尔
设置此服务器在监听传入连接时应使用的套接字描述符为
socketDescriptor。如果套接字设置成功,则返回 true;否则返回 false。假设套接字处于监听状态。
- setSslConfiguration(sslConfiguration)¶
- Parameters:
sslConfiguration –
QSslConfiguration
为
QWebSocketServer设置SSL配置为sslConfiguration。如果QWebSocketServer在非安全模式下运行(NonSecureMode),则此方法无效。- setSupportedSubprotocols(protocols)¶
- Parameters:
protocols – 字符串列表
将服务器支持的协议列表设置为
protocols。- socketDescriptor()¶
- Return type:
qintptr
返回服务器用于监听传入指令的本机套接字描述符,如果服务器未在监听,则返回-1。如果服务器使用QNetworkProxy,返回的描述符可能无法与本机套接字函数一起使用。
- sslConfiguration()¶
- Return type:
返回由
QWebSocketServer使用的SSL配置。如果服务器未在安全模式下运行(SecureMode),此方法将返回QSslConfiguration::defaultConfiguration()。- sslErrors(errors)¶
- Parameters:
错误 – .QSslError 列表
QWebSocketServer在SSL握手后发出此信号,表示在建立对等方身份时发生了一个或多个错误。这些错误通常表明QWebSocketServer无法安全地识别对等方。除非采取任何措施,否则在发出此信号后,连接将被断开。errors包含一个或多个错误,这些错误阻止了 QSslSocket 验证对等方的身份。另请参阅
- supportedSubprotocols()¶
- Return type:
字符串列表
返回服务器支持的协议列表。
- supportedVersions()¶
- Return type:
返回此服务器支持的WebSocket版本列表。