Saltare al contenuto

Getting Started

GitHub

Puoi utilizzare la nostra configurazione assistita da AI per installare il plugin. Aggiungi le Capgo competenze al tuo strumento di AI utilizzando il seguente comando:

Fermata di terminale
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

Poi utilizza il seguente prompt:

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

Se preferisci l'installazione manuale, installa il plugin eseguendo i seguenti comandi e segui le istruzioni specifiche per la piattaforma riportate di seguito:

Fermata del terminale
bun add @capgo/capacitor-network-diagnostics
bunx cap sync
import { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';

runDiagnostics è il modo più veloce per raccogliere un rapporto di supporto per un utente su una rete limitata.

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);
const status = await NetworkDiagnostics.getNetworkStatus();
console.log(status.connected);
console.log(status.connectionType);
console.log(status.internetReachable);
console.log(status.captivePortal);

I flag esatti dipendono dalla piattaforma. L'Android può riportare lo stato di internet e di porta cattiva. L'iOS riporta lo stato del percorso, il tipo di interfaccia, i percorsi costosi e i percorsi limitati attraverso 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);
}

Utilizza un endpoint di salute reale dal tuo backend. Un controllo eseguito solo dal browser può essere nascosto da WebView, CORS, proxy o comportamento di porta cattiva, mentre questo plugin utilizza networking nativo.

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

Questo è utile quando un punto di accesso Wi-Fi blocca i porti non standard, MQTT, gateway personalizzati o un backend privato, consentendo comunque la navigazione normale.

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

Usa questo quando i proxy o le porte captive consentono le pagine HTTPS ma bloccano le richieste di aggiornamento WebSocket.

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

Usa il tuo endpoint di file statico per ottenere risultati che riflettano la via di rete necessaria al tuo app.

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

Il ping ICMP raw non è portabile negli app di App Store e Play Store. Questo metodo misura la perdita di pacchetti a livello di applicazione ripetendo le probe TCP o HTTP.

L'implementazione web è destinata allo sviluppo. I browser non possono aprire socket TCP raw e le verifiche di URL possono essere limitate da CORS. Utilizzare gli edifici iOS o Android per i supporti diagnostici reali.