est-il possible de détecter en JavaScript (dans le navigateur) si un port est désactivé par le pare-feu ou le routeur? P>
3 Réponses :
Vous ne pouvez voir que si la réponse attendue est là ou non. p>
On doit rester dans les limites de http lors de l'utilisation de JavaScript. P>
Bien sûr, vous pouvez envoyer une demande Ajax sur le port de serveur et voir si vous obtenez une erreur. Si vous souhaitez vérifier le port pour la machine actuelle, envoyez probablement une demande sur "Localhost: 843" pourrait aider. P>
Mais l'erreur pourrait être d'une autre raison et pas nécessairement une question de pare-feu. P>
Nous avons besoin de plus d'informations pour vous aider. P>
J'ai un serveur de stratégie Flash, mais si le port 843 n'est pas disponible, je ne veux pas charger l'applet Flash.
Non, avec pure JavaScript, cela n'est pas possible (à part la création de demandes HTTP aux ports spécifiques, mais ces résultats signifient peu), ce que vous pouvez faire ce que vous pouvez faire est de vérifier de l'extérieur (en d'autres termes, votre serveur). le port est ouvert. Une autre option serait d'utiliser un applet Java ou un plugin de navigateur qui pourrait le faire pour vous si vous vraiment em> besoin, auquel cas il existe différents outils open source que vous pourriez probablement porter si vous avez le nécessaire expérience avec celles-ci. Notez cependant que ce n'est pas exactement convivial. (De toute façon, cela serait utile si vous décririez le scénario exact où vous en avez besoin, car il pourrait y avoir une solution tout à fait différente.) P>
J'ai un serveur de stratégie Flash, mais si le port 843 n'est pas disponible, je ne veux pas charger l'applet Flash.
Dans ce cas, je vous conseillerais de charger l'applet de flash et de faire un rappel sur votre page s'il ne peut pas fonctionner et ensuite servir les commentaires à l'utilisateur (auquel cas il s'agit de la fonctionnalité flash plutôt que de JavaScript dans lequel ce n'est pas possible) (et je ne sais pas ce qui est et ce n'est pas possible en flash exactement.).
Si vous êtes assez flexible pour utiliser jQuery, voir cette Réponse de moi . Cela vérifiera non seulement la disponibilité du port, mais également si un code de réponse de succès 200 provient de la télécommande (ou de tout cela, je voulais dire qu'il prend en charge les domaines croisés également). Donner également la solution ici. Je vérifierai ici pour le port 843.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <script type="text/javascript" src="jquery-1.7.2-min.js"></script> </head> <body> <script type"text/javascript"> var isAccessible = null; function checkConnection() { /*make sure you host a helloWorld HTML page in the following URL, so that requests are succeeded with 200 status code*/ var url = "http://yourserverIP:843/test/hello.html" ; $.ajax({ url: url, type: "get", cache: false, dataType: 'jsonp', // it is for supporting crossdomain crossDomain : true, asynchronous : false, jsonpCallback: 'deadCode', timeout : 1500, // set a timeout in milliseconds complete : function(xhr, responseText, thrownError) { if(xhr.status == "200") { isAccessible = true; success(); // yes response came, execute success() } else { isAccessible = false; failure(); // this will be executed after the request gets timed out due to blockage of ports/connections/IPs } } }); } $(document).ready( function() { checkConnection(); // here I invoke the checking function }); </script> </body> </html>
Cela m'a incité à voir si cette méthode s'appliquerait à un problème que j'avais là où nous essayions de ping un port pouvant ne pas avoir d'auditeur de l'autre côté. Le problème était que, lorsqu'il n'y avait pas d'auditeur chrome n'a toujours été enregistré une erreur même lorsque vous enveloppez la demande XHR lors d'un essai / prise. Pas un tueur mais toujours moche. En supprimant les blocs de réussite et d'erreur et en manipulant la réponse dans le bloc complet, comme vous l'avez fait ici, nous avons évité le message de la console! J'ai été capable de le faire avec un appel ASYNC aussi. Merci pour le code.
Quel genre de javascript? Dans le navigateur? Sur le serveur? Quel genre de port? Pour écouter ou connecter? Local ou distant?
Je veux le détecter dans un navigateur. Par exemple, le port 843.
J'ai un serveur de stratégie Flash, mais si le port 843 n'est pas disponible, je ne veux pas charger l'applet Flash.