Код: Выделить всё
Read error: The I/O operation has been aborted because of either a thread exit or an application request (Code: 995)
- Сервер использует async_accept для приема новых клиентских подключений, где каждое соединение заключено в экземпляр SslWebSocket.
- A ConnectionManager отслеживает подключенных клиентов.
- Я использую async_read для чтения входящих сообщений и их соответствующей маршрутизации.
- Существует также механизм проверки связи для поддержания работоспособности соединений.
- "Запуск сервера WebSocket..."
- "Ожидание подключений..."
- "Соединение принято".
- "Попытка добавить клиента..."
- "Клиент добавлен успешно".
- После этого появляется упомянутая выше ошибка чтения.
Вот отрывок из методов do_accept, start_read и main:< /p>
Код: Выделить всё
int main(int argc, char** argv) {
// Create io_context and SSL context
boost::asio::io_context io_context;
asio::ssl::context ssl_ctx(asio::ssl::context::sslv23);
ssl_ctx.set_verify_mode(asio::ssl::verify_none); // Disable SSL verification for testing
// Define the server endpoint (IP and port)
tcp::endpoint endpoint(tcp::v4(), 8080);
auto logger = std::make_shared(io_context, "server.log"); // Assuming you have a logger class
// Create the WebSocket server
auto server = std::make_shared(io_context, ssl_ctx, endpoint, logger);
// Start the server in a separate thread
std::thread server_thread([server]() {
server->start(); // Assuming you have a start method in WebSocketServer
});
// Run the io_context in the main thread
io_context.run();
// Optionally join the server thread if you want to wait for it
server_thread.join();
return 0; // Exit the program when the server is stopped (if ever)
}
void WebSocketServer::do_accept() {
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79147255/boost-beast-websocket-server-read-error-the-i-o-operation-has-been-aborted[/url]