Rumah > Artikel > hujung hadapan web > Bolehkah Pelayan Ping JavaScript untuk Pemantauan Rangkaian Berasaskan Pelayar?
Ping Pelayan daripada JavaScript: Pemantauan Rangkaian Berasaskan Penyemak Imbas
Menggunakan ping sebagai alat pemantauan rangkaian adalah amalan biasa, dan selalunya digunakan untuk mengesahkan ketersediaan pelayan jauh. Walaupun arahan ping tradisional boleh dilaksanakan daripada baris arahan, terdapat pengehadan pada pendekatan ini, seperti peningkatan masa muat halaman.
Untuk mengoptimumkan prestasi halaman, pertimbangkan untuk menjalankan proses ping di hujung pengguna. Ini membolehkan pemuatan halaman lebih pantas sementara pengguna menunggu status ketersediaan pelayan. Walau bagaimanapun, ia menimbulkan persoalan: adakah ia boleh dilakukan untuk ping pelayan daripada JavaScript?
Melaksanakan Ping JavaScript
Penyelesaian yang disediakan memanfaatkan objek Imej dalam JavaScript untuk mencapai ini tugasan. Coretan berikut menunjukkan fungsi teras:
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); } }
Skrip menggunakan ciri pemuatan tak segerak objek Imej. Jika imej berjaya dimuatkan (menunjukkan ketersediaan pelayan), peristiwa onload akan dicetuskan. Sebaliknya, jika imej gagal dimuatkan (menunjukkan ketiadaan pelayan), peristiwa onerror akan dicetuskan. Kaedah ini secara berkesan memintas sekatan penyemak imbas pada arahan ping langsung sambil mengekalkan keupayaan untuk menentukan ketersediaan pelayan.
Penyelesaian Alternatif dan Kaveat
Walaupun penyelesaian ini telah dilaporkan berfungsi merentas pelbagai jenis dan port pelayan, adalah penting untuk ambil perhatian bahawa kebolehpercayaan pelaksanaan ini mungkin berbeza-beza. Selain itu, Chrome mungkin tidak lagi menyokong kaedah ini, yang berpotensi mengakibatkan ralat bersih::ERR_NAME_NOT_RESOLVED.
Jika anda mengalami isu ini, pertimbangkan untuk meneroka penyelesaian alternatif, seperti yang tersedia di https://github.com /jdfreder/pingjs.
Atas ialah kandungan terperinci Bolehkah Pelayan Ping JavaScript untuk Pemantauan Rangkaian Berasaskan Pelayar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!