ソケットサーバーを正常に終了するには、次のように試みます。
最も重要な部分は、スロットがQCoreApplication::quit() を呼び出すように、メイン スレッド イベント ループを実行してQWebSocketServer::closed()で待機できるようにすることです。
これは、次の方法でも実行できます。
connect(webSocketServer, &QWebSocketServer::closed,
QCoreApplication::instance(), &QCoreApplication::quit);
詳しい対応は必要ありません。
pauseAccepting()
すべての前にその信号を接続した後、それ以上の接続を防ぐために続行します. コールしQWebSocketServer::close
ます。
上記で十分な場合、以下は必要ないかもしれません。最初に上記を試して、まだ問題がある場合にのみ、既存および保留中の接続に対処する必要があります。私の経験から、動作はプラットフォームによって異なり、サーバー環境でのいくつかの独自の websocket 実装によって異なります (これはおそらく Qt にすぎません)。
インスタンスを含む配列がある限り、それらすべてQWebSocket
を呼び出しQWebSocket::abort()
てすぐに解放することができます。このステップは、質問の作成者によって説明されているようです。
QWebSocketServer::nextPendingConnection()を使用して保留中の接続を反復し、それらを呼び出してみてください。それも機能する場合は、 を呼び出します。abort()
deleteLater