React Native 中的 ping

问题描述 投票:0回答:2

我想在我的项目中进行 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

reactjs react-native ping
2个回答
3
投票

使用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);
   })

0
投票

我强烈建议使用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>;
      }
}

(参见模块存储库)

你就在这里!

© www.soinside.com 2019 - 2024. All rights reserved.