Страницы

Поиск по вопросам

суббота, 11 апреля 2020 г.

JS PING серверов

#javascript

                    
Доброго всем
Пол дня мучаюсь с решением одного вопроса.
Есть список пулов для майнинга, надо определить пинг до серверов. Пинг должен быть
с IP пользователя до IP сервера, т.е. с моего сервера не пойдет, поэтому пришел к JS.
После долгих поисков соорудил такую констукцию:
      to_host ='http://5.9.6.228';
  timeStart = new Date().getTime();
  $.get(to_host).error(function (){
        ping_time = new Date().getTime() - timeStart;
        ping_time_sec = ping_time;
        document.write(''+ num +' Ping '+ to_host +' OK. Time '+ ping_time_sec +
' msec.
' ); }) Скрипт в консоли вываливает ошибку: XMLHttpRequest cannot load http://5.9.6.228/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. Но при этом получает ответ от сервера и я могу измерить это время. Можно ли считать полученное время временем PINGа в привычном понимании? Если совсем нет, подскажите решение, задолбался искать. Спасибо)


Ответы

Ответ 1



На SO предлагают использовать нативный Image для проверки связи. Кусок кода, из которого понятна идея: function Pinger_ping(ip, callback) { if(!this.inUse) { this.inUse = true; this.callback = callback this.ip = ip; var _that = this; this.img = new Image(); this.img.onload = function() {_that.good();}; this.img.onerror = function() {_that.good();}; this.start = new Date().getTime(); this.img.src = "http://" + ip; this.timer = setTimeout(function() { _that.bad();}, 1500); } } Часть времени в первый запрос уйдет на разрешение имени в ip, поэтому для имен лучше измерять повторный запрос, когда ip закэширован. fiddle

Комментариев нет:

Отправить комментарий