Saya telah menemukan seseorang yang menyelesaikan ini dengan penggunaan Imageobjek asli yang sangat pintar .
Dari sumbernya, ini adalah fungsi utama (memiliki ketergantungan pada bagian lain dari sumber tetapi Anda mendapatkan ide).
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);
}
}
Ini berfungsi pada semua jenis server yang telah saya uji (server web, server ftp, dan server game). Ini juga berfungsi dengan port. Jika ada yang menemukan kasus penggunaan yang gagal, silakan kirim komentar dan saya akan memperbarui jawaban saya.
Pembaruan : Tautan sebelumnya telah dihapus. Jika ada yang menemukan atau mengimplementasikan hal di atas, silakan komentar dan saya akan menambahkannya ke dalam jawabannya.
Pembaruan 2 : @trante cukup baik untuk menyediakan jsFiddle.
http://jsfiddle.net/GSSCD/203/
Pembaruan 3 : @ Jonathon membuat repo GitHub dengan implementasinya.
https://github.com/jdfreder/pingjs
Pembaruan 4 : Sepertinya implementasi ini tidak lagi dapat diandalkan. Orang-orang juga melaporkan bahwa Chrome tidak lagi mendukung semuanya, membuat net::ERR_NAME_NOT_RESOLVEDkesalahan. Jika seseorang dapat memverifikasi solusi alternatif saya akan menempatkan itu sebagai jawaban yang diterima.
"/?cachebreaker="+new Date().getTime();ke akhir img src jika perlu.