Pindah ke isi

Pembelajaran Dasar

GitHub

Kamu bisa menggunakan Pengaturan AI Bantu untuk menginstal plugin. Tambahkan Capgo kemampuan ke alat AI kamu menggunakan perintah berikut:

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

Lalu gunakan prompt berikut:

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

Jika Anda lebih suka Setup Manual, instal plugin dengan menjalankan perintah-perintah berikut dan ikuti instruksi spesifik platform di bawah ini:

Jendela Terminal
bun add @capgo/capacitor-network-diagnostics
bunx 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);
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 terbatas 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.

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

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 tertangkap memungkinkan halaman HTTPS tetapi memblokir 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);

Metode ICMP ping mentah tidak dapat dipindahkan ke aplikasi App Store dan Play Store. Metode ini mengukur kerugian paket pada tingkat aplikasi dengan mengulangi probe TCP atau HTTP.

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