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 –
AlertLevel
type –
AlertType
描述 – str
QWebSocketServer
如果从对等方接收到警报消息,则会发出此信号。level
告诉警报是致命的还是警告。type
是解释为什么发送警报的代码。当警报消息的文本描述可用时,它会在description
中提供。注意
该信号主要用于信息和调试目的,不需要在应用程序中进行任何处理。如果警报是致命的,底层后端将处理它并关闭连接。
- alertSent(level, type, description)¶
- Parameters:
level –
AlertLevel
type –
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:
地址 –
QHostAddress
port – 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版本列表。