我正在开发glassfish 4.0中的websockets应用程序。不使用SSL时一切正常,但在使用SSL时我无法正常工作。
我正在使用带注释的Java对象作为服务器:
@ServerEndpoint("/websocket/{sessionID}")
public class WebSocketServerEndPoint {...}
在客户端,我使用以下javascript:
var webSocket = new WebSocket('wss://domain.com:8181/websocketserver/websocket/sessionXXX');
在部署描述符web.xml中,我有一些东西可以确保不能通过ssl之外的其他方式访问应用程序:
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected resource</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- deny all methods other than GET in all url -->
<security-constraint>
<web-resource-collection>
<web-resource-name>protected</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method-omission>GET</http-method-omission>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
我通过访问index.html测试页面测试了https,该页面显示正确。
https://domain.com:8181/websocketserver/index.html
有关使用websockets时ssl无效的原因,但在使用https时工作正常吗?