You can't do this from JS. What you could do is this:
client --AJAX-- yourserver --ICMP ping-- targetservers
Make an AJAX request to your server, which will then ping the target servers for you, and return the result in the AJAX result.
Possible caveats:
- this tells you whether the target servers are pingable from your server, not from the user's client
- so the client won't be able to test hosts its LAN
- but you shouldn't let the host check hosts on the server's internal network, if any exist
- some hosts may block traffic from certain hosts and not others
- you need to limit the ping count per machine:
- to avoid the AJAX request from timing out
- some site operators can get very upset when you keep pinging their sites all the time
- resources
- long-running HTTP requests could run into maximum connection limit of your server, check how high it is
- many users trying to ping at once might generate suspicious-looking traffic (all ICMP and nothing else)
- concurrency - you may wish to pool/cache the up/down status for a few seconds at least, so that multiple clients wishing to ping the same target won't launch a flood of pings
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…