Czy jest możliwe wykrycie w JavaScript (w przeglądarce), czy port jest wyłączony przez zaporę lub router?Jak sprawdzić dostępność portu w JavaScript po stronie klienta?
Odpowiedz
Widać tylko, czy oczekiwana odpowiedź istnieje.
Podczas korzystania z javascript należy trzymać się granic HTTP.
Oczywiście można wysłać żądanie Ajax na dowolnym porcie serwera i sprawdzić, czy wystąpił błąd. Jeśli chcesz sprawdzić port dla bieżącej maszyny, prawdopodobnie wysłanie żądania na "localhost: 843" może pomóc.
Ale błąd może wynikać z innych przyczyn, niekoniecznie z powodu zapory.
Potrzebujemy więcej informacji, aby ci pomóc.
Mam serwer strategii Flash, ale jeśli port 843 jest niedostępny, nie chcę ładować apletu flash. –
Nie, z czystym javascriptem nie jest to możliwe (oprócz wysyłania żądań http do konkretnych portów, ale te wyniki niewiele znaczą), można jednak sprawdzić z zewnątrz (innymi słowy serwer), czy określony port jest otwarty. Inną opcją byłoby użycie apletu java lub wtyczki przeglądarki, które mogą zrobić to dla ciebie, jeśli potrzebujesz tego, w takim przypadku są różne narzędzia open source, które prawdopodobnie możesz przenieść, jeśli masz z nimi odpowiednie doświadczenie. Zauważ jednak, że nie jest to dokładnie przyjazne dla użytkownika. (Tak czy inaczej, byłoby użyteczne, gdybyś opisał dokładny scenariusz, w którym jest to potrzebne, ponieważ może istnieć zupełnie inne rozwiązanie.)
Mam serwer strategii Flash, ale jeśli port 843 nie jest dostępny, to nie chcę ładować apletu flash. –
W takim przypadku radzę załadować aplet flash i wykonać wywołanie zwrotne do strony, jeśli nie może on funkcjonować, a następnie przesłać informację zwrotną do użytkownika (w takim przypadku chodzi o funkcję flash, a nie javascript, gdzie to nie jest ". możliwe) (i nie wiem, co dokładnie jest i nie jest możliwe w pamięci flash). –
Jeśli jesteś wystarczająco elastyczny, aby używać jQuery, zobacz to Answer by me. To sprawdzi nie tylko dostępność portu, ale także to, czy kod odpowiedzi powodzenia 200 pochodzi z serwera zdalnego (lub dowolnego, co oznaczało, że obsługuje również domenę międzydomenową). Podaje również rozwiązanie tutaj. Będę sprawdzać tutaj dla portu 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>
To skłoniło mnie do sprawdzenia, czy ta metoda miałaby zastosowanie do problemu, który miałem, gdy próbowaliśmy pingować port, który może nie mieć odbiornika po drugiej stronie. Problem polegał na tym, że kiedy nie było odbiornika, Chrome zawsze logował błąd nawet po zawarciu żądania xhr w próbie/catch .. nie zabójca, ale wciąż brzydki. Przez usunięcie bloków sukcesu i błędów oraz obsługę odpowiedzi w całym bloku, tak jak tutaj, uniknęliśmy komunikatu konsoli! Byłem w stanie to zrobić również z połączeniem asynchronicznym. Dzięki za kod. – likestoski
- 1. Jak dołączyć javascript po stronie klienta node.js?
- 2. Logika po stronie klienta LUB logika po stronie serwera?
- 3. Języki po stronie klienta
- 4. Analizator kodu JavaScript po stronie klienta
- 5. Jak sprawdzić dostępność bazy
- 6. module.exports po stronie klienta
- 7. RegisterOnSubmitStatement po sprawdzeniu poprawności po stronie klienta
- 8. przetwarzanie obrazu po stronie klienta
- 9. Dostęp do zmiennej javascript po stronie serwera do manipulacji po stronie klienta javascript
- 10. Jak potwierdzić wejście plików po stronie klienta (JavaScript)
- 11. Jak zweryfikować formularz Symfony 2 po stronie klienta (javascript)
- 12. Kiedy korzystać po stronie klienta lub po stronie serwera?
- 13. Czy istnieje niebezpieczeństwo utworzenia UUID po stronie klienta JavaScript?
- 14. Wymuszanie uwierzytelniania Facebook: po stronie klienta i po stronie serwera
- 15. Rejestratory po stronie klienta GWT
- 16. Dostępność w walidacji formularzy javascript
- 17. Zintegrowanie sprawdzania po stronie klienta
- 18. Po stronie klienta trwałość (przechowywanie)
- 19. jqGrid sortowanie po stronie klienta
- 20. MVC3 Walidacja po stronie klienta nie działa
- 21. Niezależne zdarzenia dotyczące piaskownicy JavaScript i stosu po stronie klienta
- 22. Czy to możliwe, że po stronie klienta Validation bez Javascript
- 23. Jak sprawdzić dostępność API w Xcode 9
- 24. Kompresja plików przed przesłaniem po stronie klienta
- 25. Uzyskiwanie dostępu do zmiennych lokalnych Express.js po stronie klienta JavaScript
- 26. Dowolny parser haml po stronie klienta?
- 27. Zdecydowanie typowane języki po stronie klienta?
- 28. ASP.NET: dodawanie kontrolek po stronie klienta
- 29. Socket.io na Heroku: kod po stronie klienta
- 30. Synchronizuj dwa liczniki JavaScript po stronie klienta z serwerem
Jaki rodzaj Javascript? W przeglądarce? Na serwerze? Jaki port? Do słuchania lub łączenia? Lokalny czy zdalny? – Thilo
Chcę to wykryć w przeglądarce. Na przykład port 843. –
Mam serwer strategii Flash, ale jeśli port 843 nie jest dostępny, to nie chcę ładować apletu flash. –