Веб-сокеты не работают как минимум на одной машине

У меня есть приложение, которое использует веб-сокеты. Веб-сервер — это Glassfish 4.1.1, и мы используем @ServerEndpoint для реализации веб-сокетов на стороне сервера.

На всех компьютерах все работало нормально до того момента, когда на одном из ноутбуков какого-то заказчика возникла ошибка (он использует Google Chrome):

не удалось выполнить «отправить» в веб-сокете: все еще в состоянии ПОДКЛЮЧЕНИЯ

На этом компьютере эта ошибка появляется постоянно, блокируя все функции, связанные с веб-сокетами.

Мы не настраиваем определенный порт для веб-сокетов. Поэтому я предполагаю, что они используют значение по умолчанию — 80. Другие страницы загружаются успешно (таким образом, наш веб-сайт доступен с этого ноутбука).

Есть ли ключ куда копать? Почему выходит из строя только один ноутбук? Нужно ли предоставлять больше информации?

Заранее спасибо!


person Luxor    schedule 13.08.2016    source источник


Ответы (2)


Может быть много вещей:

  • Брандмауэр
  • Антивирус
  • Флаг Chrome (например, запуск: chrome.exe --disable-web-sockets)
  • Вирус/вредоносное ПО
  • Человек посередине (MitM)

Я предлагаю установить Firefox. Если у Firefox нет проблем, то у Chrome наверняка есть проблемы.

person Marcos Zolnowski    schedule 14.08.2016
comment
Может ли брандмауэр или антивирус блокировать вебсокеты, даже если они работают с 80-м портом? Я не могу установить на эту машину все, что могу. Есть ли обходной путь? Возможно, чтобы заменить веб-сокеты? - person Luxor; 15.08.2016
comment
Некоторые антивирусы фильтруют содержимое порта 80, даже блокируя или закрывая ваш сокет. Что ж, если вы хотите заменить веб-сокеты, измените свой код, чтобы использовать технику Comet. - person Marcos Zolnowski; 16.08.2016
comment
Спасибо за ответ. Похоже, что проблема действительно в прокси. Веб-сокеты не могут подключаться через прокси. Я нашел его с помощью websocketstest.com на этом компьютере. - person Luxor; 16.08.2016
comment
Ясно, ну, если прокси возится с пакетами, можно сказать, что это своего рода человек посередине. ;) - person Marcos Zolnowski; 16.08.2016

У меня такая же проблема. Проверьте, к какому порту вы пытаетесь подключиться из внешнего приложения (ваш сокет должен быть назначен порту). Мой WS-сервер прослушивал порт 8080, и у некоторых пользователей исходящий порт был заблокирован. Сделал прокси с 80 на 8080 и теперь доступ есть у всех пользователей.

person dżej dżej    schedule 09.04.2019