Ошибка веб-сокета при установлении соединения: net :: ERR_CONNECTION_REFUSED 'wss: //' - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь подключиться к серверу через 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 после большого количества чтения и попыток. Надеюсь, что кто-то может помочь.

...