PySide6.QtWebSockets.QWebSocketServer

class QWebSocketServer

实现一个基于WebSocket的服务器。更多

PySide6.QtWebSockets.QWebSocketServer 的继承图

概要

方法

虚拟方法

信号

注意

本文档可能包含从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])
Parameters:

使用给定的serverName构造一个新的QWebSocketServerserverName将在HTTP握手阶段用于标识服务器。它可以为空,在这种情况下,不会向客户端发送服务器名称。secureMode参数指示服务器是通过wss(SecureMode)还是通过ws(NonSecureMode)运行。

parent 被传递给 QObject 构造函数。

acceptError(socketError)
Parameters:

socketErrorSocketError

当接受新连接时发生错误时,会发出此信号。socketError参数描述了发生的错误类型。

alertReceived(level, type, description)
Parameters:

QWebSocketServer 如果从对等方接收到警报消息,则会发出此信号。level 告诉警报是致命的还是警告。type 是解释为什么发送警报的代码。当警报消息的文本描述可用时,它会在 description 中提供。

注意

该信号主要用于信息和调试目的,不需要在应用程序中进行任何处理。如果警报是致命的,底层后端将处理它并关闭连接。

注意

并非所有后端都支持此功能。

另请参阅

alertSent() AlertType

alertSent(level, type, description)
Parameters:

QWebSocketServer 如果向对等方发送了警报消息,则会发出此信号。level 描述它是警告还是致命错误。type 提供警报消息的代码。当警报消息的文本描述可用时,它会在 description 中提供。

注意

此信号主要是信息性的,可用于调试目的,通常不需要应用程序采取任何操作。

注意

并非所有后端都支持此功能。

另请参阅

alertReceived() AlertType

close()

关闭服务器。服务器将不再监听传入的连接。

closed()

当服务器关闭其连接时,会发出此信号。

另请参阅

close()

error()
Return type:

CloseCode

返回最后发生的错误的错误代码。如果没有发生错误,则返回CloseCodeNormal

另请参阅

errorString()

errorString()
Return type:

字符串

返回最近发生的错误的人类可读描述。如果没有发生错误,则返回空字符串。

另请参阅

serverError()

handleConnection(socket)
Parameters:

socketQTcpSocket

将tcp socket升级为websocket。

QWebSocketServer 对象将拥有该套接字对象的所有权,并在适当的时候删除它。

handshakeInterruptedOnError(error)
Parameters:

错误QSslError

QWebSocketServer 如果在证书验证中发现 error 并且在 QSslConfiguration 中启用了早期错误报告,则会发出此信号。

handshakeTimeoutMS()
Return type:

整数

返回新连接的握手超时时间,单位为毫秒。

默认是10秒。如果对等方使用更多时间来完成握手,他们的连接将被关闭。

另请参阅

setHandshakeTimeout() handshakeTimeout()

hasPendingConnections()
Return type:

布尔

如果服务器有待处理的连接,则返回 true;否则返回 false。

isListening()
Return type:

布尔

如果服务器当前正在监听传入连接,则返回 true;否则返回 false。如果监听失败,error() 将返回原因。

另请参阅

listen() error()

listen([address=QHostAddress.Any[, port=0]])
Parameters:
Return type:

布尔

告诉服务器在地址 address 和端口 port 上监听传入的连接。如果 port 为 0,则自动选择一个端口。如果 address 是 QHostAddress::Any,服务器将在所有网络接口上监听。

成功时返回 true;否则返回 false。

另请参阅

isListening()

maxPendingConnections()
Return type:

整数

返回待处理接受连接的最大数量。默认值为30。

nativeDescriptor()
Return type:

qintptr

注意

此函数已弃用。

返回服务器用于监听传入指令的本机套接字描述符,如果服务器未在监听,则返回-1。如果服务器使用QNetworkProxy,返回的描述符可能无法与本机套接字函数一起使用。

newConnection()

每次有新连接可用时都会发出此信号。

nextPendingConnection()
Return type:

QWebSocket

返回下一个待处理的连接作为一个已连接的QWebSocket对象。QWebSocketServer不会拥有返回的QWebSocket对象的所有权。调用者有责任在不再使用该对象时显式删除它,否则会发生内存泄漏。如果没有待处理的连接时调用此函数,则返回nullptr。

注意:返回的QWebSocket对象不能从另一个线程使用。

originAuthenticationRequired(pAuthenticator)
Parameters:

pAuthenticatorQWebSocketCorsAuthenticator

当请求新连接时,会发出此信号。连接到该信号的槽应指示是否允许源(可以通过origin()调用确定)在authenticator对象中(通过发出setAllowed())。

如果没有插槽连接到这个信号,默认情况下将接受所有来源。

注意

无法使用QueuedConnection连接到此信号,因为连接将始终成功。

pauseAccepting()

暂停传入的新连接。排队的连接将保持在队列中。

另请参阅

resumeAccepting()

peerVerifyError(error)
Parameters:

错误QSslError

QWebSocketServer 在SSL握手期间,加密尚未建立之前,可以多次发出此信号,以指示在建立对等方身份时发生了错误。error 通常表示 QWebSocketServer 无法安全地识别对等方。

此信号在出现问题时为您提供早期指示。通过连接到此信号,您可以在握手完成之前手动选择从连接的槽内部断开连接。如果不采取任何行动,QWebSocketServer 将继续发出 sslErrors()

另请参阅

sslErrors()

preSharedKeyAuthenticationRequired(authenticator)
Parameters:

认证器QSslPreSharedKeyAuthenticator

QWebSocketServer 在协商PSK加密套件时发出此信号,因此随后需要PSK认证。

使用PSK时,客户端必须向服务器发送有效的身份和有效的预共享密钥,以便SSL握手继续进行。应用程序可以通过根据其需求填充传递的authenticator对象,在连接到该信号的槽中提供此信息。

注意

忽略此信号,或未能提供所需的凭据,将导致握手失败,从而导致连接中止。

注意

authenticator 对象由套接字拥有,应用程序不得删除它。

另请参阅

preSharedKeyAuthenticationRequired()

proxy()
Return type:

QNetworkProxy

返回此服务器的网络代理。默认情况下使用 QNetworkProxy::DefaultProxy。

另请参阅

setProxy()

resumeAccepting()

恢复接受新连接。

另请参阅

pauseAccepting()

secureMode()
Return type:

SslMode

返回服务器正在运行的安全模式。

另请参阅

QWebSocketServer() SslMode

serverAddress()
Return type:

QHostAddress

如果服务器正在监听连接,则返回服务器的地址;否则返回 QHostAddress::Null。

另请参阅

serverPort() listen()

serverError(closeCode)
Parameters:

closeCodeCloseCode

当在WebSocket连接设置过程中发生错误时,会发出此信号。closeCode参数描述了发生的错误类型

另请参阅

errorString()

serverName()
Return type:

字符串

返回在HTTP握手阶段使用的服务器名称。

另请参阅

setServerName()

serverPort()
Return type:

整数

如果服务器正在监听连接,则返回服务器的端口;否则返回0。

另请参阅

serverAddress() listen()

serverUrl()
Return type:

QUrl

如果服务器正在监听连接,则返回客户端可用于连接到此服务器的URL。否则返回无效的URL。

setHandshakeTimeout(msec)
Parameters:

毫秒 – 整数

这是一个重载函数。

setMaxPendingConnections(numConnections)
Parameters:

numConnections – int

设置待处理接受连接的最大数量为numConnectionsWebSocketServer在调用nextPendingConnection()之前,将不会接受超过numConnections的传入连接。默认情况下,限制为30个待处理连接。

QWebSocketServer 将在达到最大连接数时发出带有 CloseCodeAbnormalDisconnection 关闭代码的 error() 信号。WebSocket 握手将失败,并且套接字将被关闭。

setNativeDescriptor(descriptor)
Parameters:

描述符qintptr

Return type:

布尔

注意

此函数已弃用。

设置此服务器在监听传入连接时应使用的套接字描述符为socketDescriptor

如果套接字设置成功,则返回 true;否则返回 false。假设套接字处于监听状态。

setProxy(networkProxy)
Parameters:

networkProxyQNetworkProxy

将此服务器的显式网络代理设置为 networkProxy

要禁用代理的使用,请使用 QNetworkProxy::NoProxy 代理类型:

server->setProxy(QNetworkProxy::NoProxy);

另请参阅

proxy()

setServerName(serverName)
Parameters:

serverName – str

将用于HTTP握手阶段的服务器名称设置为给定的serverNameserverName可以为空,在这种情况下,将向客户端发送一个空的服务器名称。现有的已连接客户端不会收到此更改的通知,只有新连接的客户端会看到这个新名称。

另请参阅

serverName()

setSocketDescriptor(socketDescriptor)
Parameters:

socketDescriptorqintptr

Return type:

布尔

设置此服务器在监听传入连接时应使用的套接字描述符为socketDescriptor

如果套接字设置成功,则返回 true;否则返回 false。假设套接字处于监听状态。

setSslConfiguration(sslConfiguration)
Parameters:

sslConfigurationQSslConfiguration

QWebSocketServer设置SSL配置为sslConfiguration。如果QWebSocketServer在非安全模式下运行(NonSecureMode),则此方法无效。

setSupportedSubprotocols(protocols)
Parameters:

protocols – 字符串列表

将服务器支持的协议列表设置为protocols

socketDescriptor()
Return type:

qintptr

返回服务器用于监听传入指令的本机套接字描述符,如果服务器未在监听,则返回-1。如果服务器使用QNetworkProxy,返回的描述符可能无法与本机套接字函数一起使用。

sslConfiguration()
Return type:

QSslConfiguration

返回由QWebSocketServer使用的SSL配置。如果服务器未在安全模式下运行(SecureMode),此方法将返回QSslConfiguration::defaultConfiguration()。

sslErrors(errors)
Parameters:

错误 – .QSslError 列表

QWebSocketServer 在SSL握手后发出此信号,表示在建立对等方身份时发生了一个或多个错误。这些错误通常表明 QWebSocketServer 无法安全地识别对等方。除非采取任何措施,否则在发出此信号后,连接将被断开。

errors 包含一个或多个错误,这些错误阻止了 QSslSocket 验证对等方的身份。

另请参阅

peerVerifyError()

supportedSubprotocols()
Return type:

字符串列表

返回服务器支持的协议列表。

supportedVersions()
Return type:

QWebSocketProtocol.Version 的列表

返回此服务器支持的WebSocket版本列表。