Saltar al contenido

Iniciar sesión

GitHub

Puede utilizar nuestra configuración asistida por IA para instalar el plugin. Agregue las Capgo habilidades a su herramienta de IA utilizando el siguiente comando:

Ventana de terminal
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

Luego utilice el siguiente prompt:

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-network-diagnostics` plugin in my project.

Si prefieres la configuración manual, instala el complemento ejecutando los siguientes comandos y sigue las instrucciones específicas de la plataforma a continuación:

ventana de terminal
npm install @capgo/capacitor-network-diagnostics
npx cap sync
import { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';

runDiagnostics es la forma más rápida de recopilar un informe de soporte para un usuario en una red restringida.

const report = await NetworkDiagnostics.runDiagnostics({
urls: [{ url: 'https://api.example.com/health', method: 'HEAD' }],
ports: [{ host: 'api.example.com', port: 443 }],
websockets: [{ url: 'wss://ws.example.com/socket' }],
download: {
url: 'https://speed.example.com/5mb.bin',
maxBytes: 5 * 1024 * 1024,
},
packetLoss: {
mode: 'tcp',
host: 'api.example.com',
port: 443,
count: 10,
},
});
console.log(report.status.connectionType);
console.log(report.issues);

Verificar el estado de la red actual

Sección titulada “Ver el estado de la red actual”
const status = await NetworkDiagnostics.getNetworkStatus();
console.log(status.connected);
console.log(status.connectionType);
console.log(status.internetReachable);
console.log(status.captivePortal);

Las banderas exactas dependen de la plataforma. Android puede informar el estado de internet y puerta de enlace captiva. iOS informa el estado de ruta, tipo de interfaz, rutas caras y rutas con restricciones a través de Network.framework.

const result = await NetworkDiagnostics.testUrl({
url: 'https://api.example.com/health',
method: 'HEAD',
timeoutMs: 5000,
followRedirects: true,
});
if (!result.reachable) {
console.warn(result.errorCode, result.errorMessage);
}

Utilice un punto de conexión de salud real desde su backend. Un chequeo solo de navegador puede estar oculto por WebView, CORS, proxy o comportamiento de puerta de enlace captiva, mientras que este plugin utiliza redes nativas.

const port = await NetworkDiagnostics.testPort({
host: 'api.example.com',
port: 443,
timeoutMs: 3000,
});
console.log(port.open, port.durationMs);

Esto es útil cuando un punto de acceso Wi-Fi bloquea puertos no estándar, MQTT, puertas de enlace personalizadas o un backend privado mientras aún permite la navegación normal.

const socket = await NetworkDiagnostics.testWebSocket({
url: 'wss://ws.example.com/socket',
timeoutMs: 5000,
});
console.log(socket.open, socket.statusCode);

Utilice esto cuando los proxies o los portales captivos permiten páginas HTTPS pero bloquean las solicitudes de actualización de WebSocket.

const speed = await NetworkDiagnostics.testDownloadSpeed({
url: 'https://speed.example.com/5mb.bin',
maxBytes: 5 * 1024 * 1024,
timeoutMs: 30000,
});
console.log(speed.mbps);

Utilice su propio punto de conexión de archivo estático para que el resultado refleje el camino de red que necesita su aplicación.

const loss = await NetworkDiagnostics.testPacketLoss({
mode: 'tcp',
host: 'api.example.com',
port: 443,
count: 10,
timeoutMs: 3000,
intervalMs: 250,
});
console.log(loss.lossPercent);

El ping ICMP bruto no es portátil en aplicaciones de App Store y Play Store. Este método mide la pérdida de paquetes a nivel de aplicación repitiendo sondas TCP o HTTP.

Fallo de red de fallback web

Sección titulada “Fallo de red”

La implementación web está destinada al desarrollo. Los navegadores no pueden abrir sockets TCP crudos y las comprobaciones de URL pueden estar limitadas por CORS. Utilice las compilaciones de iOS o Android para obtener soporte de diagnósticos reales.