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