Cab*_*ath 5 sockets ssl https tomcat websocket
我在 Tomcat 8 上无法通过 TLS 获得 WebSocket 连接。
我已经设置了以下连接器:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
/>
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystorefile="${user.home}/.keystore" keystorePass="password"
/>
Run Code Online (Sandbox Code Playgroud)
在名为“socket”的标准 Tomcat servlet 中,我在类上使用了 @ServerEndpoint 注释来创建 WebSocket 端点。因此,精简版本如下所示:
@ServerEndpoint(value = "/echo")
public class EchoServer {
@OnOpen
public void onOpen(Session session) {
//
}
@OnMessage
public void onMessage(String message, Session session) {
//
}
@OnClose
public void onClose(Session session) {
//
}
}
Run Code Online (Sandbox Code Playgroud)
在我的客户端,我有一个连接 WebSocket 的 html 脚本:
var webSocket = new WebSocket("ws://localhost:8080/socket/echo");
Run Code Online (Sandbox Code Playgroud)
当我连接到http://localhost:8080/socket 时一切正常。我可以打开套接字连接并来回传递消息。
使用https://localhost:8443/socket我可以连接到 servlet,但我无法打开套接字连接,因为这是一个不安全的操作。然后我尝试将连接字符串更改为:
var webSocket = new WebSocket("wss://localhost:8443/socket/echo");
Run Code Online (Sandbox Code Playgroud)
但像这样我无法获得任何联系。
当我查看 Tomcat 文档(https://tomcat.apache.org/tomcat-8.0-doc/web-socket-howto.html)时,我不明白我需要更改什么 - 我看到一些提到 SSL_CONTEXT 和像,但我找不到任何如何使用它的示例(无论如何,我没有 ClientEndpointConfig,因为那是浏览器?)。
有人可以指出我解决方案的方向吗?为什么在 http 端口上工作正常的连接在 https 端口上不起作用?
| 归档时间: |
|
| 查看次数: |
3259 次 |
| 最近记录: |