我只想在一个页面上通过WebSockets连接到服务器。
我的客户端websocket:
var socket = new WebSocket("wss://serverName:8181/projectName/actions");
Java Server Endpoint:
/actions
使用websocket的URL具有以下结构:
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,未启用安全性,未启用websocket支持
Http-Listener-2:侦听端口8181,启用安全性,启用websocket
两者都启用了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的页面中,我收到此错误:
与'wss:// serverName:8181 / projectName / actions'的WebSocket连接失败:连接建立错误:net :: ERR_CONNECTION_REFUSED
我尝试了很多不同的方法。我也尝试了没有端口号的websocket URI。在我们在服务器计算机上获得数字证书之前,一切都运行良好。我当时只使用'ws'而不是'wss'而且我没有web.xml文件中的安全约束。但是,经过大量阅读和尝试后,我无法在HTTPS下提供websocket连接。希望有人可以提供帮助。