Bunu yerel Imagenesnenin çok akıllıca kullanılmasıyla başaran birini buldum .
Kaynaklarından, bu ana işlevdir (kaynağın diğer bölümlerine bağımlıdır, ancak fikri anlarsınız).
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);
}
}
Bu, test ettiğim tüm sunucu türlerinde (web sunucuları, ftp sunucuları ve oyun sunucuları) çalışır. Bağlantı noktaları ile de çalışır. Herhangi biri başarısız bir kullanım durumu ile karşılaşırsa, lütfen yorumlarda yayınlayın ve cevabımı güncelleyeceğim.
Güncelleme : Önceki bağlantı kaldırıldı. Birisi yukarıdakini bulursa veya uygularsa, lütfen yorum yapın ve cevaba ekleyeceğim.
Güncelleme 2 : @Trante bir jsFiddle sağlayacak kadar güzeldi.
http://jsfiddle.net/GSSCD/203/
Güncelleme 3 : @Jonathon uygulama ile bir GitHub repo oluşturdu.
https://github.com/jdfreder/pingjs
Güncelleme 4 : Bu uygulama artık güvenilir değil gibi görünüyor. İnsanlar ayrıca Chrome'un artık hepsini desteklemediğini ve net::ERR_NAME_NOT_RESOLVEDhata verdiğini bildiriyor . Birisi alternatif bir çözümü doğrulayabilirse, bunu kabul edilen cevap olarak koyacağım.
"/?cachebreaker="+new Date().getTime();Gerekirse img src'nin sonuna a eklenerek bu önlenebilir .