diff --git a/src/websocket_server.cpp b/src/websocket_server.cpp index 949fe34..2167e37 100644 --- a/src/websocket_server.cpp +++ b/src/websocket_server.cpp @@ -93,6 +93,9 @@ void WebSocketServer::stop() { } void WebSocketServer::startServer() { + // Kurze Wartezeit, falls ein vorheriger Prozess den Port noch freigibt + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + struct lws_context_creation_info info; memset(&info, 0, sizeof(info)); info.port = port; @@ -101,7 +104,8 @@ void WebSocketServer::startServer() { // Server-Optionen für mehrere gleichzeitige Verbindungen info.options = LWS_SERVER_OPTION_VALIDATE_UTF8 | LWS_SERVER_OPTION_HTTP_HEADERS_SECURITY_BEST_PRACTICES_ENFORCE | - LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME; + LWS_SERVER_OPTION_SKIP_SERVER_CANONICAL_NAME | + LWS_SERVER_OPTION_REUSE_ADDR; // Erlaube Port-Wiederverwendung (SO_REUSEADDR) // Erlaube mehrere Verbindungen pro IP info.ka_time = 60; @@ -127,7 +131,10 @@ void WebSocketServer::startServer() { context = lws_create_context(&info); if (!context) { - throw std::runtime_error("Failed to create LWS context"); + std::string errorMsg = "Failed to create LWS context on port " + std::to_string(port); + errorMsg += ". Port may be in use or insufficient permissions."; + std::cerr << errorMsg << std::endl; + throw std::runtime_error(errorMsg); } std::cout << "WebSocket-Server erfolgreich gestartet auf Port " << port << std::endl;