@capgo/电容-网络-诊断
找出为什么您的 Capacitor app 无法到达您的后端: 测试连接类型, HTTP 可达性, TCP 端口, WebSockets, 下载速度以及设备本身的包丢失 .
🤖 建筑与AI编码代理? 安装 Capgo 技能 所以克劳德代码,代码,光标,副驾驶,或双子座CLI知道如何安装和使用
@capgo/capacitor-network-diagnostics在您的电容应用程序中:npx skills add Cap-go/capgo-skills。然后问你的经纪人: 添加@capgo/capor-network-diagrostics到我的Capacitor应用上,并把它接上。" 代理设置指南 • 妇女 主机磁共振
主要特点
- 网络状态数字 :
getNetworkStatus()返回本地连接类型和网络旗. - 可达到性数字 :
testUrl()用于 HTTP 或 HTTPS 和testPort()一个TCP主机和端口. - 网络软件数字 :
testWebSocket()检查握手完成. - 业绩数字 :
testDownloadSpeed()财务报告和审定财务报表testPacketLoss()。 。 。 . - 一份报告数字 :
runDiagnostics()运行数个检查并返回压缩摘要. - 平台: iOS,Android和Web. 互联网档案馆的存檔,存档日期2013-12-02. Web 运行浏览器能力检查 。 TCP端口测试需要本土代码.
安装
您可以使用我们的 AI 辅助设置安装插件 。 使用以下命令将 Capgo 技能添加到您的 AI 工具 :
npx skills add https://github.com/cap-go/capacitor-skills --skill capacitor-plugins
然后使用下列提示:
Use the `capacitor-plugins` skill from `cap-go/capacitor-skills` to install the `@capgo/capacitor-network-diagnostics` plugin in my project.
如果您更喜欢手动设置,请通过运行以下命令来安装插件,并遵循下面的平台特定指令:
npm install @capgo/capacitor-network-diagnostics
npx cap sync
测试什么
- 目前本地连接类型:WiFi,蜂窝,ethenet,VPN,无,或未知.
- OS网络旗:在Android上验证了互联网,在Android上封存了门户,如果有的话费用昂贵或受限制的路径.
- 原生HTTP/HTTPS URL可达性,具有状态代码和耐用性.
- 原生TCP主机:端口连接.
- 本地 WebSocket 握手方式
ws://财务报告和审定财务报表wss://。 。 。 . - 根据自己的测试文件端点下载吞吐量 .
- 使用重复的 TCP 连接或 HTTP 请求来丢失包.
App Store和Play Store应用软件的Raw ICMP ping并不一致. testPacketLoss 因此,用TCP或HTTP探测器测量应用级损失.
使用量
import { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';
const status = await NetworkDiagnostics.getNetworkStatus();
const api = await NetworkDiagnostics.testUrl({
url: 'https://api.example.com/health',
method: 'HEAD',
timeoutMs: 5000,
});
const port = await NetworkDiagnostics.testPort({
host: 'api.example.com',
port: 443,
timeoutMs: 3000,
});
const ws = await NetworkDiagnostics.testWebSocket({
url: 'wss://ws.example.com/socket',
timeoutMs: 5000,
});
const packetLoss = await NetworkDiagnostics.testPacketLoss({
mode: 'tcp',
host: 'api.example.com',
port: 443,
count: 10,
});
console.log({ status, api, port, ws, packetLoss });
合并诊断运行
const report = await NetworkDiagnostics.runDiagnostics({
urls: [{ url: 'https://api.example.com/health' }],
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.issues);
平台说明
- iOS:不需要额外权限. 连接类型来自
Network.framework。 。 。 . - Android: 插件声明
android.permission.INTERNET财务报告和审定财务报表android.permission.ACCESS_NETWORK_STATE。 。 。 . - Web:作为开发后退提供. 浏览器无法打开原始的 TCP 套接字, 且 URL 检查受 CORS 限制 .
API 密码
getNetworkStatus()testUrl(...)testPort(...)testWebSocket(...)testDownloadSpeed(...)testPacketLoss(...)runDiagnostics(...)getPluginVersion()- 接口
- 类型异名
原生网络诊断API.
获取网络状态
getNetworkStatus() => Promise<NetworkStatusResult>
读取当前本地连接类型和平台网络旗.
回返情况: Promise<NetworkStatusResult>
testUrl (...)
testUrl(options: UrlTestOptions) => Promise<UrlTestResult>
测试 HTTP 或 HTTPS URL 是否能够从本地网络中达到 .
| 参数 | 类型 |
|---|---|
options | UrlTestOptions |
回返情况: Promise<UrlTestResult>
测试端口(...)
testPort(options: PortTestOptions) => Promise<PortTestResult>
测试 TCP 主机: 端口能否从本地网络打开 .
| 参数 | 类型 |
|---|---|
options | PortTestOptions |
回返情况: Promise<PortTestResult>
测试WebSocket(...)
testWebSocket(options: WebSocketTestOptions) => Promise<WebSocketTestResult>
测试一个 WebSocket URL能否完成本土握手.
| 参数 | 类型 |
|---|---|
options | WebSocketTestOptions |
回返情况: Promise<WebSocketTestResult>
已下载Speed(...)
testDownloadSpeed(options: DownloadSpeedTestOptions) => Promise<DownloadSpeedTestResult>
测量本地 HTTP 请求的下载吞吐量 .
| 参数 | 类型 |
|---|---|
options | DownloadSpeedTestOptions |
回返情况: Promise<DownloadSpeedTestResult>
测试包Loss(...)
testPacketLoss(options: PacketLossTestOptions) => Promise<PacketLossTestResult>
使用重复的 TCP 或 HTTP 探测器估计应用级包丢失 .
| 参数 | 类型 |
|---|---|
options | PacketLossTestOptions |
回返情况: Promise<PacketLossTestResult>
运行分析(...)
runDiagnostics(options?: RunDiagnosticsOptions | undefined) => Promise<RunDiagnosticsResult>
运行多个诊断并返回一个紧凑的问题清单.
| 参数 | 类型 |
|---|---|
options | RunDiagnosticsOptions |
回返情况: Promise<RunDiagnosticsResult>
获取 PluginVersion ()
getPluginVersion() => Promise<PluginVersionResult>
返回平台执行版本标记 .
回返情况: Promise<PluginVersionResult>
接口
网络状态
目前本地网络状态.
| Prop | 类型 | 说明 |
|---|---|---|
connected | boolean | 当平台报告活跃的网络路径时为真. |
connectionType | ConnectionType | 最佳活动运输类型. |
internetReachable | boolean | 当操作系统将网络标记为具有互联网能力或验证能力时,这是真的. |
expensive | boolean | 真实的或昂贵的网络路径. |
constrained | boolean | 当OS报告一个低数据或受限的网络路径时是真实的. |
captivePortal | boolean | 当Android报告被俘的传送门能力时是真实的. |
details | Record<string, string | number | boolean> | 本地平台细节对调试有用. |
乌尔测试结果
原生HTTP URL可达性结果.
| Prop | 类型 |
|---|---|
url | string |
method | UrlTestMethod |
ok | boolean |
reachable | boolean |
durationMs | number |
statusCode | number |
finalUrl | string |
errorCode | string |
errorMessage | string |
乌尔测试选项
本地 HTTP URL 可达性检查的选项 .
| Prop | 类型 | 说明 |
|---|---|---|
url | string | HTTP或HTTPS URL要测试. |
method | UrlTestMethod | HTTP 方法 。 默认为 HEAD。 。 。 . |
timeoutMs | number | 请求超时, 以毫秒计 。 默认为 10000。 。 。 . |
followRedirects | boolean | 跟踪方向 默认为 true。 。 。 . |
港口测试结果
本地 TCP 端口检查结果 .
| Prop | 类型 |
|---|---|
host | string |
port | number |
open | boolean |
durationMs | number |
errorCode | string |
errorMessage | string |
端口测试选项
本地 TCP 端口检查选项 .
| Prop | 类型 | 说明 |
|---|---|---|
host | string | 主机名或IP地址 . |
port | number | TCP端口开通. |
timeoutMs | number | 以毫秒计算超时 。 默认为 5000。 。 。 . |
WebSocket 测试结果
本地WebSocket握手结果.
| Prop | 类型 |
|---|---|
url | string |
open | boolean |
durationMs | number |
protocol | string |
statusCode | number |
errorCode | string |
errorMessage | string |
WebSocket 测试选项
本地 WebSocket 握手检查选项 .
| Prop | 类型 | 说明 |
|---|---|---|
url | string | ws:// 或者说 wss:// URL要测试. |
timeoutMs | number | 握手暂停数毫秒。 默认为 10000。 。 。 . |
下载测试结果
原地下载速度测量结果.
| Prop | 类型 |
|---|---|
url | string |
ok | boolean |
durationMs | number |
bytesDownloaded | number |
bytesPerSecond | number |
mbps | number |
statusCode | number |
errorCode | string |
errorMessage | string |
下载测试选项
本地下载速度测量选项 .
| Prop | 类型 | 说明 |
|---|---|---|
url | string | HTTP或HTTPS URL返回一个可下载的正文. |
maxBytes | number | 停止前要读取的最大字节 。 默认为 5242880 (5个米B. |
timeoutMs | number | 请求超时, 以毫秒计 。 默认为 30000。 。 。 . |
包装丢失测试结果
应用程序级包丢失结果 .
| Prop | 类型 |
|---|---|
mode | PacketLossMode |
target | string |
sent | number |
received | number |
lost | number |
lossPercent | number |
averageLatencyMs | number |
minLatencyMs | number |
maxLatencyMs | number |
errorCode | string |
errorMessage | string |
包丢失测试选项
包损失计量的选项 .
原生应用程序不能依赖原始的 ICMP ping 和 iOS 和 Android,所以这个 用重复的 TCP 连接或 HTTP 测量应用级别损失的方法 请求.
| Prop | 类型 | 说明 |
|---|---|---|
mode | PacketLossMode | 探测模式。 默认为 tcp 提供主机/端口时,否则 http。 。 。 . |
host | string | TCP探测器的主机名或IP地址. |
port | number | TCP端口用于TCP探测. |
url | string | HTTP或HTTP URL用于HTTP探测器. |
count | number | 要发送的探测器数量 。 默认为 10。 。 。 . |
timeoutMs | number | 用毫秒计时 默认为 3000。 。 。 . |
intervalMs | number | 探测器之间的延迟数以毫秒计。 默认为 250。 。 。 . |
运行诊断结果
本地网络综合诊断结果.
| Prop | 类型 |
|---|---|
status | NetworkStatusResult |
urls | UrlTestResult[] |
ports | PortTestResult[] |
websockets | WebSocketTestResult[] |
issues | string[] |
download | DownloadSpeedTestResult |
packetLoss | PacketLossTestResult |
运行分析选项
综合本土网络诊断运行的选项.
| Prop | 类型 |
|---|---|
urls | UrlTestOptions[] |
ports | PortTestOptions[] |
websockets | WebSocketTestOptions[] |
download | DownloadSpeedTestOptions |
packetLoss | PacketLossTestOptions |
插件变压器
插件版本有效载荷 .
| Prop | 类型 | 说明 |
|---|---|---|
version | string | 版本标识符由平台执行返回. |
类型异名
连接类型
'none' | 'wifi' | 'cellular' | 'ethernet' | 'vpn' | 'other' | 'unknown'
记录
构造 T 类型 K 的一组属性类型
{
[P in K]: T;
}
乌尔测试方法
'HEAD' | 'GET'
包装丢失模式
'tcp' | 'http'