Is it possible to ping a server from Javascript?

后端 未结 17 924
礼貌的吻别
礼貌的吻别 2020-11-22 04:02

I\'m making a web app that requires that I check to see if remote servers are online or not. When I run it from the command line, my page load goes up to a full 60s (for 8 e

相关标签:
17条回答
  • 2020-11-22 04:51

    To keep your requests fast, cache the server side results of the ping and update the ping file or database every couple of minutes(or however accurate you want it to be). You can use cron to run a shell command with your 8 pings and write the output into a file, the webserver will include this file into your view.

    0 讨论(0)
  • 2020-11-22 04:52

    you can try this:

    put ping.html on the server with or without any content, on the javascript do same as below:

    <script>
        function ping(){
           $.ajax({
              url: 'ping.html',
              success: function(result){
                 alert('reply');
              },     
              error: function(result){
                  alert('timeout/error');
              }
           });
        }
    </script>
    
    0 讨论(0)
  • 2020-11-22 04:54

    just replace

    file_get_contents
    

    with

    $ip = $_SERVER['xxx.xxx.xxx.xxx'];
    exec("ping -n 4 $ip 2>&1", $output, $retval);
    if ($retval != 0) { 
      echo "no!"; 
    } 
    else{ 
      echo "yes!"; 
    }
    
    0 讨论(0)
  • 2020-11-22 04:56
    let webSite = 'https://google.com/' 
    https.get(webSite, function (res) {
        // If you get here, you have a response.
        // If you want, you can check the status code here to verify that it's `200` or some other `2xx`.
        console.log(webSite + ' ' + res.statusCode)
    }).on('error', function(e) {
        // Here, an error occurred.  Check `e` for the error.
        console.log(e.code)
    });;
    

    if you run this with node it would console log 200 as long as google is not down.

    0 讨论(0)
  • 2020-11-22 04:56

    It might be a lot easier than all that. If you want your page to load then check on the availability or content of some foreign page to trigger other web page activity, you could do it using only javascript and php like this.

    yourpage.php

    <?php
    if (isset($_GET['urlget'])){
      if ($_GET['urlget']!=''){
        $foreignpage= file_get_contents('http://www.foreignpage.html');
        // you could also use curl for more fancy internet queries or if http wrappers aren't active in your php.ini
        // parse $foreignpage for data that indicates your page should proceed
        echo $foreignpage; // or a portion of it as you parsed
        exit();  // this is very important  otherwise you'll get the contents of your own page returned back to you on each call
      }
    }
    ?>
    
    <html>
      mypage html content
      ...
    
    <script>
    var stopmelater= setInterval("getforeignurl('?urlget=doesntmatter')", 2000);
    
    function getforeignurl(url){
      var handle= browserspec();
      handle.open('GET', url, false);
      handle.send();
      var returnedPageContents= handle.responseText;
      // parse page contents for what your looking and trigger javascript events accordingly.
      // use handle.open('GET', url, true) to allow javascript to continue executing. must provide a callback function to accept the page contents with handle.onreadystatechange()
    }
    function browserspec(){
      if (window.XMLHttpRequest){
        return new XMLHttpRequest();
      }else{
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    
    </script>
    

    That should do it.

    The triggered javascript should include clearInterval(stopmelater)

    Let me know if that works for you

    Jerry

    0 讨论(0)
提交回复
热议问题