我想在我的项目中进行 ping 操作。我已经尝试过
ping-litle
库,但它不起作用。我也尝试过这个:
var request = new xhtmlrequest();
request.onreadystatechange = (e) => {
if (request.readyState !== 4) {
return;
}
if (request.status === 200) {
console.log('success');
} else {
console.log('error');
}
};
request.open('GET', 'http://192.168.0.254/');
request.send();
但是当我第二次调用该函数时,即使我的主机已断开连接,我也会得到相同的结果。 您有在 React Native 中进行良好 ping 的想法吗? 或者如何摧毁我的
xhtmlrequest
?
使用react-native提供的fetch API。
您的代码将如下所示:
fetch('http://192.168.0.254')
.then((response) => {
if (response.status === 200) {
console.log('success');
} else {
console.log('error');
}
})
.catch((error) => {
console.log('network error: ' + error);
})
我强烈建议使用react-native-ping模块。它在反应本机版本处理方面存在一些问题,但幸运的是,您可以使用
npm install react-native-ping --force
安装它(我知道这感觉有点不对,但是,它确实有效)。如果您使用打字稿,您可以为类型声明您自己的自定义模块,并将其添加到您的 tsconfig.json
的 typeRoots
属性中。 (例如,创建您的 module-types
和 react-native-ping.d.ts
文件,可能如下所示:
declare module 'react-native-ping' {
type PingOptions = {
/** Amount of time in ms to wait before reporting ping failed (Default: 1000ms) */
timeout?: number;
/** [iOS only] Size of the payload to send to the server (Default: 56 bytes) */
payloadSize?: number;
};
type TrafficStats = {
receivedNetworkSpeed: string;
receivedNetworkTotal: string;
sendNetworkSpeed: string;
sendNetworkTotal: string;
};
export default class Ping {
/**
* Ping a specified server and return the RTT (Round-trip time) in ms
*
* @param ipAddress IP Address of the server to ping (eg: 8.8.8.8)
* @param options Optional parameters
*/
static start(
ipAddress: string,
options?: PingOptions,
): Promise<number>;
static getTrafficStats(): Promise<TrafficStats>;
}
}
(参见模块存储库)
你就在这里!