Я играю с веб-сокетами, и кажется, что все браузеры с собственной поддержкой веб-сокетов, которые я тестировал (Safari, Chrome), блокируют некоторые порты. Если я пытаюсь подключиться к своему серверу через порт 80, все работает нормально. Если я попробую другие порты, такие как 81, 82 или 1000, соединение преждевременно закрыто, потому что на другом конце ничего нет. Это ожидаемое поведение, и оно прекрасно работает.
Однако, с некоторыми портами (например, 20, 37 или 79), консоль разработчика Chrome просто говорит WebSocket port 79 blocked
, но мой код JS не получает никакой информации об этом (даже некоторый тайм-аут). Safari немного более многословен и комментирует SECURITY_ERR: DOM Exception 18: An attempt was made to break through the security policy of the user agent.
Итак, мои вопросы таковы:
Как я могу надежно определить, что порт заблокирован?
Нужно ли устанавливать тайм-аут и проверять его вручную? Это не самый разумный способ сделать это, хотя это может быть единственный способ сделать это кросс-браузерным.
Где я могу найти список заблокированных портов?
Мой поиск в Google не дал ничего полезного, к сожалению.
Почему эти порты заблокированы в первую очередь?
Заранее спасибо!