Verbessere Benutzerkommunikation im ChatRoom durch optimierte Nachrichtenreihenfolge
- Füge Debug-Ausgaben hinzu, um den Ablauf beim Hinzufügen neuer Benutzer zu protokollieren. - Sende wichtige Nachrichten (Raum- und Benutzerlisten) an den neuen Benutzer, bevor der checkerTask-Thread gestartet wird, um sicherzustellen, dass alle relevanten Informationen rechtzeitig bereitgestellt werden. - Implementiere eine kurze Verzögerung, um den Abschluss des WebSocket-Handshakes zu gewährleisten, bevor Nachrichten gesendet werden.
This commit is contained in:
@@ -252,9 +252,20 @@ namespace Yc
|
||||
void ChatUser::checkerTask()
|
||||
{
|
||||
try {
|
||||
#ifdef YC_DEBUG
|
||||
std::cout << "[Debug] checkerTask started for user: " << _name << " (socket: " << _socket << ")" << std::endl;
|
||||
#endif
|
||||
|
||||
// Warte kurz, damit der WebSocket-Handshake vollständig abgeschlossen ist
|
||||
#ifdef YC_DEBUG
|
||||
std::cout << "[Debug] checkerTask: Waiting 500ms for WebSocket handshake..." << std::endl;
|
||||
#endif
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(500));
|
||||
|
||||
#ifdef YC_DEBUG
|
||||
std::cout << "[Debug] checkerTask: Starting heartbeat monitoring for user: " << _name << std::endl;
|
||||
#endif
|
||||
|
||||
// Heartbeat-Intervall: Alle 10 Sekunden Verbindung prüfen
|
||||
const int HEARTBEAT_INTERVAL = 2;
|
||||
int heartbeatCounter = 0;
|
||||
@@ -358,11 +369,15 @@ namespace Yc
|
||||
// Prüfe ob Socket noch gültig ist
|
||||
if (_socket < 0 || _stop) {
|
||||
#ifdef YC_DEBUG
|
||||
std::cout << "[Debug] Skipping send - socket invalid or user stopped" << std::endl;
|
||||
std::cout << "[Debug] Skipping send - socket invalid (" << _socket << ") or user stopped (" << _stop << ") for user: " << _name << std::endl;
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef YC_DEBUG
|
||||
std::cout << "[Debug] Sending message to user: " << _name << " (socket: " << _socket << ")" << std::endl;
|
||||
#endif
|
||||
|
||||
// Entferne ggf. Token-Felder aus JSON-Strings und sende über Socket/WebSocket
|
||||
Base::sanitizeTokensInString(out);
|
||||
Base::send(_socket, out);
|
||||
@@ -372,11 +387,15 @@ namespace Yc
|
||||
// Prüfe ob Socket noch gültig ist
|
||||
if (_socket < 0 || _stop) {
|
||||
#ifdef YC_DEBUG
|
||||
std::cout << "[Debug] Skipping send - socket invalid or user stopped" << std::endl;
|
||||
std::cout << "[Debug] Skipping send - socket invalid (" << _socket << ") or user stopped (" << _stop << ") for user: " << _name << std::endl;
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef YC_DEBUG
|
||||
std::cout << "[Debug] Sending JSON message to user: " << _name << " (socket: " << _socket << ")" << std::endl;
|
||||
#endif
|
||||
|
||||
// Entferne rekursiv alle Token-Felder und sende über Socket/WebSocket
|
||||
Base::sanitizeTokens(out);
|
||||
Base::send(_socket, out);
|
||||
|
||||
Reference in New Issue
Block a user