我有一个Java webapp和一个浏览器应用程序,通过我的客户端Javascript代码中的WebSockets连接到它:
function connect() {
var username = 'my-user';
var url = `ws://${document.location.host}${document.location.pathname}chat/${username}`;
log(`making WebSocket connection to ${url}`)
var ws = new WebSocket(url);
ws.onmessage = (event) => {
var message = JSON.parse(event.data);
log(message.message);
};
ws.onerror = (event) => {
log(event);
}
}
本地运行Tomcat时的端点为ws://localhost:8080/my-app/chat/my-user
在Docker下运行Tomcat时的端点是ws://localhost:8090/my-app/chat/my-user
(端口8090)
这在连接到我的本地Tomcat时工作正常,但在连接到Docker Tomcat时则不行。
尝试连接Docker Tomcat时我得到的错误是:
WebSocket连接到' ws:// localhost:8090 / my-app / chat / my-user'失败:WebSocket握手期间出错:意外的响应代码:404
有什么想法吗?据我所知,我不需要在Docker中打开任何其他端口(我已正确映射8090)。我不知道是否有任何额外的日志记录我可以在Tomcat中打开以显示端点。也许我只是没有指定正确的端点?