broadcastLog method

void broadcastLog(
  1. Map<String, dynamic> logEntry
)

Broadcasts a new log entry to all connected WebSocket clients.

Implementation

void broadcastLog(Map<String, dynamic> logEntry) {
  if (!kDebugMode) return;
  if (_wsClients.isEmpty) {
    debugPrint('⚠️ NetworkLogWebServer: No WebSocket clients connected');
    return;
  }

  try {
    // Enhance the log entry with display information
    final enhancedLog = {
      ...logEntry,
      'displayStatus': _getDisplayStatus(logEntry),
      'displayType': _getDisplayType(logEntry),
      'displayMethod': _getDisplayMethod(logEntry),
    };

    final message = jsonEncode({
      'type': 'log',
      'log': enhancedLog,
      'timestamp': DateTime.now().toIso8601String(),
    });

    for (final client in _wsClients) {
      try {
        client.add(message);
        debugPrint('✅ NetworkLogWebServer: Broadcasted log: ${logEntry['id']}');
      } catch (e) {
        debugPrint('❌ NetworkLogWebServer: Failed to broadcast to client: $e');
        _wsClients.remove(client);
      }
    }
  } catch (e) {
    debugPrint('❌ NetworkLogWebServer: Failed to prepare log for broadcast: $e');
  }
}