Lompat ke Konten

Mulai

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

runDiagnostics adalah cara tercepat untuk mengumpulkan laporan dukungan untuk pengguna di jaringan yang terbatas.

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);

Periksa status jaringan saat ini

Periksa status jaringan saat ini
const status = await NetworkDiagnostics.getNetworkStatus();
console.log(status.connected);
console.log(status.connectionType);
console.log(status.internetReachable);
console.log(status.captivePortal);

Flag yang tepat tergantung pada platform. Android dapat melaporkan status internet yang diverifikasi dan portal kaptif. iOS melaporkan status jalur, jenis antarmuka, jalur mahal, dan jalur terikat melalui 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);
}

Gunakan endpoint kesehatan nyata dari backend Anda. Periksaan browser hanya dapat disembunyikan oleh WebView, CORS, proxy, atau perilaku portal kaptif, sedangkan plugin ini menggunakan jaringan native.

Tes koneksi porta TCP

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

Hal ini berguna ketika titik akses Wi-Fi memblokir porta non-standar, MQTT, gateway kustom, atau backend pribadi sementara masih memungkinkan browsing normal.

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

Gunakan ini ketika proxy atau portal tertutup memungkinkan halaman HTTPS tetapi menghalangi permintaan upgrade WebSocket.

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

Gunakan endpoint file statis milik Anda sendiri sehingga hasilnya mencerminkan jalur jaringan yang dibutuhkan aplikasi Anda.

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

Pengiriman ICMP mentah tidak dapat dipindahkan dalam aplikasi App Store dan Play Store. Metode ini mengukur kerugian paket pada tingkat aplikasi dengan mengulang probe TCP atau HTTP.

Fallback web

Pengganti Web

Implementasi web ini dimaksudkan untuk pengembangan. Browser tidak dapat membuka soket TCP mentah, dan pengecekan URL mungkin terbatas oleh CORS. Gunakan build iOS atau Android untuk dukungan nyata.