Verbessere WebSocket-Nachrichtenverarbeitung im SSLServer und Base

- Initialisiere Benutzerdaten im WebSocket-Callback, um sicherzustellen, dass Token und ausstehende Nachrichten korrekt gesetzt sind.
- Optimiere die Logik zum Senden von Nachrichten, indem Ping-Nachrichten direkt gesendet werden, um die Verbindung aufrechtzuerhalten.
- Füge Debug-Ausgaben hinzu, um den Erfolg des Nachrichtensendens zu protokollieren und die Nachverfolgbarkeit zu verbessern.
This commit is contained in:
Torsten Schulz (local)
2025-09-05 13:52:13 +02:00
parent 2effeaa025
commit 88b02c837d
2 changed files with 19 additions and 20 deletions

View File

@@ -353,16 +353,18 @@ namespace Yc {
// Cast to lws* and use libwebsockets API
struct lws* lws_wsi = static_cast<struct lws*>(wsi);
// Store message in user data for sending
auto* ud = reinterpret_cast<WebSocketUserData*>(lws_wsi_user(lws_wsi));
if (ud) {
ud->pendingMessage = out;
lws_callback_on_writable(lws_wsi);
// Send message directly using lws_write
unsigned char buf[LWS_PRE + out.length()];
memcpy(buf + LWS_PRE, out.c_str(), out.length());
int ret = lws_write(lws_wsi, buf + LWS_PRE, out.length(), LWS_WRITE_TEXT);
#ifdef YC_DEBUG
if (ret < 0) {
std::cout << "[Debug] Failed to write WebSocket message, ret: " << ret << std::endl;
} else {
#ifdef YC_DEBUG
std::cout << "[Debug] No user data found for WebSocket, cannot send message" << std::endl;
#endif
std::cout << "[Debug] WebSocket message written successfully, bytes: " << ret << std::endl;
}
#endif
}
void Base::sendWebSocketMessage(void* wsi, const Json::Value& out) {