Я пытаюсь подключиться к серверу через WebSockets только на одной странице.
Мой клиентский веб-сокет:
var socket = new WebSocket("wss://serverName:8181/projectName/actions");
Конечная точка сервера Java:
/actions
URL, по которому используется websocket, имеет следующую структуру:
https://serverName/projectName/pageName.xhtml
Мой корень контекста совпадает с именем проекта. Ограничения безопасности в файле web.xml:
<security-constraint>
<web-resource-collection>
<web-resource-name>SecureResource</web-resource-name>
<url-pattern>/projectName/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Я использую Glassfish Application Server 4.1. На сервере есть два http-слушателя. О слушателях:
Http-Listener-1: прослушивает порт 8080, защита не включена, поддержка веб-сокетов не включена
Http-Listener-2: прослушивает порт 8181, защита включена, веб-сокет включен
SSL3 и TLS включены в обоих из них. Я даю подробности о сервере, потому что я действительно новичок в вопросах, связанных с сервером, поэтому я не знаю, важны ли эти подробности. Я также запускаю следующие команды, пытаясь найти исправление. Но эти команды могут быть не связаны:
asadmin set server.network-config.protocols.protocol.http-listener-1.http.scheme-mapping=X-Forwarded-Proto
asadmin set server.network-config.protocols.protocol.http-listener-2.http.scheme-mapping=X-Forwarded-Proto
Все мои подключения работают по HTTPS без проблем. Однако на странице, где я использую websocket, я получаю эту ошибку:
Сбой подключения WebSocket к 'wss: // имя_сервера: 8181 / имя_проекта / действия': Ошибка при установлении соединения: net :: ERR_CONNECTION_REFUSED
Я пробовал много разных подходов. Я также попробовал URI websocket без номера порта. Все работало нормально до того, как у нас был цифровой сертификат на сервере. Я тогда использовал «ws» вместо «wss», и у меня не было ограничений безопасности в файле web.xml. Тем не менее, я не могу обеспечить соединение через сокет через HTTPS после большого количества чтения и попыток. Надеюсь, что кто-то может помочь.