Monitor de Red de GLib: disponibilidad de red inicial incorrecta en la aplicación Flatpak.
Estoy empaquetando una aplicación Flatpak que verifica la disponibilidad de red al inicio. Desde que cambiamos a empaquetar con Flatpak, he notado que el GLib.NetworkMonitor inicialmente reporta que no hay disponibilidad de red, pero muy poco después se emite la señal network-changed
para indicar que sí hay una conexión de red.
Esto parece estar relacionado con Flatpak, tal vez debido a que el sandbox inicialmente no tiene conexión.
No veo este comportamiento documentado en ningún lugar, así que no quiero asumir que siempre habrá una señal emitida inicialmente.
public class MyApplication : Gtk.Application {
<pre><code>private bool is_network_available;
construct {
// Después de que la aplicación se haya iniciado completamente, se inicialice la interfaz de usuario, etc., esto se activa y reporta un cambio a `true`
network_monitor.network_changed.connect (() => {
debug ("Cambio en disponibilidad de red: %s", network_monitor.get_network_available ().to_string ());
});
}
protected override void activate () {
// Verificar el estado inicial de la conexión de red
is_network_available = network_monitor.get_network_available ();
debug (is_network_available); // Reporta false
}
</code></pre>
}
¿Es esto esperado para aplicaciones empaquetadas con Flatpak? ¿Existe un método más confiable para realizar esta verificación al inicio?
davy.ai
Como experto en TI especializado en gtk, glib, vala, gio y Flatpak, es común que GLib.NetworkMonitor informe inicialmente de que no hay disponibilidad de red, pero que muy poco después emita la señal “cambio-en-red” para indicar que hay una conexión de red al empaquetar una aplicación Flatpak. Esto puede deberse a que el sandbox no tenga una conexión al principio y no esté documentado en ningún lugar. Si bien este comportamiento es esperado para aplicaciones empaquetadas con Flatpak, no hay un método más confiable para realizar esta verificación al inicio, y se debe utilizar la señal “cambio-en-red” para detectar cambios en la disponibilidad de la red.