API to subclass to implement an HTTP server. 更多...
| 頭: |
#include <QAbstractHttpServer>
|
| CMake: |
find_package(Qt6 REQUIRED COMPONENTS HttpServer)
target_link_libraries(mytarget PRIVATE Qt6::HttpServer)
|
| qmake: |
QT += httpserver
|
| Since: | Qt 6.4 |
| 繼承: | QObject |
| 繼承者: |
| QAbstractHttpServer (QObject * parent = nullptr) | |
| virtual | ~QAbstractHttpServer () override |
(從 6.8 起)
void
|
addWebSocketUpgradeVerifier (const typename QtPrivate::ContextTypeForFunctor<Handler>::ContextType * context , Handler && func ) |
| bool | bind (QLocalServer * server ) |
| bool | bind (QTcpServer * server ) |
| bool | hasPendingWebSocketConnections () const |
(從 6.8 起)
QHttp2Configuration
|
http2Configuration () const |
| QList<QLocalServer *> | localServers () const |
| std::unique_ptr<QWebSocket> | nextPendingWebSocketConnection () |
| QList<quint16> | serverPorts () const |
| QList<QTcpServer *> | servers () const |
(從 6.8 起)
void
|
setHttp2Configuration (const QHttp2Configuration & configuration ) |
| void | newWebSocketConnection () |
| virtual bool | handleRequest (const QHttpServerRequest & request , QHttpServerResponder & responder ) = 0 |
| virtual void | missingHandler (const QHttpServerRequest & request , QHttpServerResponder & responder ) = 0 |
Subclass this class and override handleRequest () 和 missingHandler () to create an HTTP server. Use bind () to start listening to all the incoming connections to a server.
This is a low level API, see QHttpServer for a highler level API to implement an HTTP server.
[explicit]
QAbstractHttpServer::
QAbstractHttpServer
(
QObject
*
parent
= nullptr)
Creates an instance of QAbstractHttpServer with the parent parent .
[override virtual noexcept]
QAbstractHttpServer::
~QAbstractHttpServer
()
Destroys an instance of QAbstractHttpServer .
[since 6.8]
template <typename Handler, QAbstractHttpServer::if_compatible_callable<Handler> = true>
void
QAbstractHttpServer::
addWebSocketUpgradeVerifier
(const
typename
QtPrivate::ContextTypeForFunctor
<
Handler
>
::ContextType
*
context
,
Handler
&&
func
)
Adds a callback function
func
that verifies incoming WebSocket upgrades using the context object
context
. Upgrade attempts succeed if at least one of the registered callback functions returns
Accept
and a handler returning
Deny
has not been executed before it. If no handlers are registered or all return
PassToNext
,
missingHandler
() is called. The callback functions are executed in the order they are registered. The callbacks cannot call addWebSocketUpgradeVerifier().
注意: The WebSocket upgrades fail if no callbacks has been registered.
注意:
This overload participates in overload resolution only if the callback function takes a
const
QHttpServerRequest
& as an argument and returns a
QHttpServerWebSocketUpgradeResponse
.
server.addWebSocketUpgradeVerifier( &server, [](const QHttpServerRequest &request) { if (request.url().path() == "/allowed"_L1) return QHttpServerWebSocketUpgradeResponse::accept(); else return QHttpServerWebSocketUpgradeResponse::passToNext(); });
該函數在 Qt 6.8 引入。
另請參閱 QHttpServerRequest , QHttpServerWebSocketUpgradeResponse , hasPendingWebSocketConnections (), nextPendingWebSocketConnection (), newWebSocketConnection (),和 missingHandler ().
Bind the HTTP server to given QLocalServer server over which the transmission happens. It is possible to call this function multiple times with different instances of server to handle multiple connections.
After calling this function, every _new_ connection will be handled and forwarded by the HTTP server.
It is the user's responsibility to call
QLocalServer::listen
() on the
server
before calling this function. If
server
is not listening, nothing will happen and
false
將被返迴。
若 server is nullptr false is returned.
If successful the
server
will be parented to this HTTP server and
true
被返迴。
另請參閱 QLocalServer and QLocalServer::listen ().
Bind the HTTP server to given TCP server over which the transmission happens. It is possible to call this function multiple times with different instances of TCP server to handle multiple connections and ports, for example both SSL and non-encrypted connections.
After calling this function, every _new_ connection will be handled and forwarded by the HTTP server.
It is the user's responsibility to call
QTcpServer::listen
() on the
server
before calling this function. If
server
is not listening, nothing will happen and
false
將被返迴。
If successful the
server
will be parented to this HTTP server and
true
被返迴。
To allow usage of HTTP 2, bind to a
QSslServer
where
QSslConfiguration::setAllowedNextProtocols
() has been called with the arguments
{ QSslConfiguration::ALPNProtocolHTTP2 }
.
另請參閱 QTcpServer , QTcpServer::listen (),和 QSslConfiguration::setAllowedNextProtocols ().
[pure virtual protected]
bool
QAbstractHttpServer::
handleRequest
(const
QHttpServerRequest
&
request
,
QHttpServerResponder
&
responder
)
Override this function to handle each incoming
request
, by examining the
request
and sending the appropriate response back to
responder
. Return
true
若
request
was handled successfully. If this method returns
false
,
missingHandler
() will be called afterwards.
This function must move out of
responder
before returning
true
.
返迴
true
if the server has pending WebSocket connections; otherwise returns
false
.
另請參閱 newWebSocketConnection (), nextPendingWebSocketConnection (),和 addWebSocketUpgradeVerifier ().
[since 6.8]
QHttp2Configuration
QAbstractHttpServer::
http2Configuration
() const
Returns server's HTTP/2 configuration parameters.
該函數在 Qt 6.8 引入。
另請參閱 setHttp2Configuration ().
Returns the local servers of this HTTP server.
另請參閱 serverPorts ().
[pure virtual protected]
void
QAbstractHttpServer::
missingHandler
(const
QHttpServerRequest
&
request
,
QHttpServerResponder
&
responder
)
Override this function to handle each incoming
request
that was not handled by
handleRequest
(). This function is called whenever
handleRequest
() 返迴
false
, or if there is a WebSocket upgrade attempt and either there are no connections to
newWebSocketConnection
() or there are no matching WebSocket verifiers. The
request
and
responder
parameters are the same as
handleRequest
() was called with.
另請參閱 handleRequest () 和 addWebSocketUpgradeVerifier ().
[signal]
void
QAbstractHttpServer::
newWebSocketConnection
()
This signal is emitted every time a new WebSocket connection is available.
另請參閱 hasPendingWebSocketConnections (), nextPendingWebSocketConnection (),和 addWebSocketUpgradeVerifier ().
返迴下一待決連接作為連接的
QWebSocket
對象。
nullptr
被返迴若在沒有待決連接時調用此函數。
注意: 返迴的 QWebSocket 對象不可以用於其它綫程。
另請參閱 newWebSocketConnection (), hasPendingWebSocketConnections (),和 addWebSocketUpgradeVerifier ().
Returns the list of ports this instance of QAbstractHttpServer is listening to.
This function has the same guarantee as QObject::children , the latest server added is the last entry in the vector.
另請參閱 servers ().
Returns the TCP servers of this HTTP server.
另請參閱 serverPorts ().
[since 6.8]
void
QAbstractHttpServer::
setHttp2Configuration
(const
QHttp2Configuration
&
configuration
)
Sets server's HTTP/2 configuration parameters.
The next HTTP/2 connection will use the given configuration .
該函數在 Qt 6.8 引入。
另請參閱 http2Configuration ().