Avatar billede mike2002 Nybegynder
12. juni 2009 - 23:45 Der er 6 kommentarer og
1 løsning

"Pinge" server vha. javascript

Hej eksperter!

Jeg kan forstå på diverse andre forums, at det ikke er muligt at pinge en server vha. javascript, men man kan gøre noget andet. For at tjekke om en server er oppe, kan man gøre sådan:

<script type="text/javascript">
function ping(ipnum){
var ImageObject = new Image();
ImageObject.src = "https://" + ipnum + "/images/question.gif";
if(ImageObject.height>0){
document.write('<iframe src="https://' + ipnum + '" width="100%" scrolling=no frameborder="0">');
} else {
  document.write('Serveren er nede!'); }
}
ping('server-navn-el-ip');
</script>

Dette virker også fint, men det er som om javscript "husker" mit ImageObject - således vil scriptet herover forsøge at hente iframen selvom serveren er nede, hvis ens browser tidligere har haft fat i test-filen (question.gif).

Er der en måde at undgå dette på?
Avatar billede nidyahou Praktikant
12. juni 2009 - 23:52 #1
det er din browser der husker billedet.

Jeg vil mene at du med et ajaxkald kan finde ud af om serveren er nede... Med JQuery er det gjort nemt.

Hvis du kender noget til JQuery kan du se på $.load(), $.get() eller $.post() funktionen. Hvis du ikke kender noget til JQuery burde du lære det at kende ;)

Måske er det bare mig de er mega JQuery fan :)

se mere på www.jquery.com
og for online cheatsheet www.visualjquery.com under ajax
Avatar billede nidyahou Praktikant
12. juni 2009 - 23:55 #2
og for nu at svare på dit spørgsmål med en anden løsning som er hurtigere, og sørger for at billede bliver hentet ned forskelligt hver gang. så kan du gøre følgende:

ImageObject.src = "https://" + ipnum + "/images/question.gif?i=" + Math.random()*1000001;

Så vil du få genereret et tilfældigt tal mellem 1 og 1 million og serveren vil der for opfatte det som forskellige billeder og være tvunget til at se bort fra det der ligger i din cache
Avatar billede mike2002 Nybegynder
12. juni 2009 - 23:58 #3
Det lyder som om jeg skal tjekke det der JQuery ud - det har jeg intet kendskab til overhovedet.

Vil lige teste din løsning.

Tak for det.
Avatar billede mike2002 Nybegynder
13. juni 2009 - 00:03 #4
Jo, det ser ud til at virke. Serveren er faktisk nede nu og til en gang i nat pga. backup, så jeg må vente med at teste færdig til i morgen.

Tak for det! Point uddelt!
Avatar billede nidyahou Praktikant
13. juni 2009 - 00:05 #5
np - tak for point
Avatar billede justrace Novice
13. juni 2009 - 00:20 #6
Det kræver vel også at det man pinger svarer på ping? Det gør seriøse servere der er sikret ordentligt ikke.
Avatar billede nidyahou Praktikant
13. juni 2009 - 00:48 #7
det er jo ikke så meget ping, som det er forsøg på at hente data ned. Hvis der er nogle elementer der altid vil være tilgængelige når serveren er oppe kan man jo forsøge at hente dem ned, og se om det fejler. Netop som løsningen er blevet til.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester