QAbstractHttpServer Class
HTTP サーバを実装するためにサブクラス化する API。詳細...
Header: | #include <QAbstractHttpServer> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS HttpServer) target_link_libraries(mytarget PRIVATE Qt6::HttpServer) |
qmake: | QT += httpserver |
Since: | Qt 6.4 |
Inherits: | QObject |
Inherited By: | |
Status: | Technical Preview |
パブリック関数
QAbstractHttpServer(QObject *parent = nullptr) | |
virtual | ~QAbstractHttpServer() override |
(since 6.8) void | addWebSocketUpgradeVerifier(const typename QtPrivate::ContextTypeForFunctor<Handler>::ContextType *context, Handler &&func) |
bool | bind(QLocalServer *server) |
bool | bind(QTcpServer *server) |
bool | hasPendingWebSocketConnections() const |
(since 6.8) QHttp2Configuration | http2Configuration() const |
QList<QLocalServer *> | localServers() const |
std::unique_ptr<QWebSocket> | nextPendingWebSocketConnection() |
QList<quint16> | serverPorts() const |
QList<QTcpServer *> | servers() const |
(since 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 |
詳細説明
このクラスをサブクラス化し、handleRequest() およびmissingHandler() をオーバーライドして HTTP サーバーを作成します。bind() を使用して、サーバーへのすべての着信コネクションのリッスンを開始します。
HTTP サーバを実装するための高レベル API についてはQHttpServer を参照してください。
メンバー関数ドキュメント
[explicit]
QAbstractHttpServer::QAbstractHttpServer(QObject *parent = nullptr)
QAbstractHttpServer のインスタンスをparent を親として生成します。
[override virtual noexcept]
QAbstractHttpServer::~QAbstractHttpServer()
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)
コンテキストオブジェクトcontext を使用して、着信 WebSocket アップグレードを検証するコールバック関数func を追加します。登録されているコールバック関数の少なくとも 1 つがAccept
を返し、Deny
を返すハンドラがその前に実行されていなければ、アップグレードの試みは成功します。ハンドラが1つも登録されていないか、すべてがPassToNext
を返す場合、missingHandler() が呼び出される。コールバック関数は、登録された順に実行される。コールバック関数は、addWebSocketUpgradeVerifier() を呼び出すことはできません。
注: コールバック関数が登録されていない場合、WebSocket のアップグレードは失敗します。
注: このオーバーロードは、コールバック関数が引数としてconst
QHttpServerRequest & を取り、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()も参照してください 。
bool QAbstractHttpServer::bind(QLocalServer *server)
HTTP サーバを、転送が行われるQLocalServer server にバインドします。複数の接続を処理するために、server の異なるインスタンスでこの関数を複数回呼び出すことが可能です。
この関数を呼び出すと、すべての新しい接続がHTTPサーバーによって処理され、転送されます。
この関数を呼び出す前に、server でQLocalServer::listen() を呼び出すのはユーザーの責任である。server がリッスンしていない場合、何も起こらず、false
が返されます。
server がnullptrの場合、falseが返される。
成功すると、server がこの HTTP サーバーの親になり、true
が返されます。
QLocalServer およびQLocalServer::listen()も参照 。
bool QAbstractHttpServer::bind(QTcpServer *server)
HTTP サーバを、送信が行われる TCPserver にバインドします。複数の接続とポート、例えばSSL接続と非暗号化接続を処理するために、異なるTCPserver のインスタンスでこの関数を複数回呼び出すことが可能です。
この関数を呼び出すと、すべての新しい接続がHTTPサーバによって処理され、転送されます。
この関数を呼び出す前に、server でQTcpServer::listen() を呼び出すのはユーザーの責任である。server がリッスンしていない場合、何も起こらずfalse
が返される。
成功すると、server がこのHTTPサーバーの親となり、true
が返される。
HTTP 2を使用するには、QSslConfiguration::setAllowedNextProtocols() を引数{ QSslConfiguration::ALPNProtocolHTTP2 }
で呼び出したQSslServer にバインドする。
QTcpServer 、QTcpServer::listen()、QSslConfiguration::setAllowedNextProtocols()も参照 。
[pure virtual protected]
bool QAbstractHttpServer::handleRequest(const QHttpServerRequest &request, QHttpServerResponder &responder)
この関数をオーバーライドして、request を調べ、responder に適切なレスポンスを送り返すことで、request を処理する。request が正常に処理された場合はtrue
を返す。このメソッドがfalse
を返す場合、その後にmissingHandler() が呼び出される。
この関数は、true
を返す前にresponder から移動しなければならない。
bool QAbstractHttpServer::hasPendingWebSocketConnections() const
サーバーに保留中の WebSocket 接続がある場合はtrue
を返し、ない場合はfalse
を返す。
newWebSocketConnection()、nextPendingWebSocketConnection()、addWebSocketUpgradeVerifier()も参照のこと 。
[since 6.8]
QHttp2Configuration QAbstractHttpServer::http2Configuration() const
サーバの HTTP/2 設定パラメータを返します。
この関数は Qt 6.8 で導入されました。
setHttp2Configuration()も参照して ください。
QList<QLocalServer *> QAbstractHttpServer::localServers() const
この HTTP サーバのローカルサーバを返します。
serverPorts() も参照して ください。
[pure virtual protected]
void QAbstractHttpServer::missingHandler(const QHttpServerRequest &request, QHttpServerResponder &responder)
handleRequest() で処理されなかったrequest を処理するために、この関数をオーバーライドします。この関数は、handleRequest() がfalse
を返すか、WebSocket のアップグレードが試みられ、newWebSocketConnection() への接続がないか、一致する WebSocket 検証者が存在しない場合に呼び出される。request およびresponder パラメータは、handleRequest() が呼び出されたときと同じである。
handleRequest() およびaddWebSocketUpgradeVerifier()も参照 。
[signal]
void QAbstractHttpServer::newWebSocketConnection()
このシグナルは、新しい WebSocket 接続が利用可能になるたびに発行される。
hasPendingWebSocketConnections()、nextPendingWebSocketConnection()、addWebSocketUpgradeVerifier() も参照 。
std::unique_ptr<QWebSocket> QAbstractHttpServer::nextPendingWebSocketConnection()
次の保留中の接続を、接続済みのQWebSocket オブジェクトとして返します。保留中の接続がないときにこの関数を呼び出すと、nullptr
が返されます。
注意: 返されたQWebSocket オブジェクトは、別のスレッドから使用することはできません。
newWebSocketConnection()、hasPendingWebSocketConnections()、addWebSocketUpgradeVerifier()も参照 。
QList<quint16> QAbstractHttpServer::serverPorts() const
QAbstractHttpServer のインスタンスがリッスンしているポートのリストを返す。
この関数はQObject::children と同じ保証を持ち、追加された最新のサーバがベクタの最後のエントリとなる。
servers()も参照 。
QList<QTcpServer *> QAbstractHttpServer::servers() const
この HTTP サーバの TCP サーバを返します。
serverPorts()も参照 。
[since 6.8]
void QAbstractHttpServer::setHttp2Configuration(const QHttp2Configuration &configuration)
サーバの HTTP/2 設定パラメータを設定します。
次の HTTP/2 接続は、与えられたconfiguration を使用します。
この関数は Qt 6.8 で導入されました。
http2Configuration()も参照して ください。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。