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:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user