Java tomcat7 spring boot应用程序中的WebSocket
我有一个SpringBootWar文件,正在部署到Tomcat7.0.78实例。web应用程序启动正常,但web套接字不工作。它们在嵌入式tomcat环境中运行良好,例如运行Java tomcat7 spring boot应用程序中的WebSocket,java,spring,tomcat,websocket,Java,Spring,Tomcat,Websocket,我有一个SpringBootWar文件,正在部署到Tomcat7.0.78实例。web应用程序启动正常,但web套接字不工作。它们在嵌入式tomcat环境中运行良好,例如运行/gradlew bootRun 我在chrome控制台中遇到的错误是: angular.js:14525 Possibly unhandled rejection: Whoops! Lost connection to http://localhost:8080/websock 我尝试将tomcat连接器设置为使用HTT
/gradlew bootRun
我在chrome控制台中遇到的错误是:
angular.js:14525 Possibly unhandled rejection: Whoops! Lost connection to http://localhost:8080/websock
我尝试将tomcat连接器设置为使用HTTP11NIO协议,但似乎没有效果
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000"
redirectPort="8443" />
我没有在web.xml中编辑任何内容,只更改了server.xml中的连接器协议
更新:
我的问题的一部分是我的连接尝试在前面有一个斜线,例如。
$stomp.connect('/websock'),因此我将其更改为$stomp.connect('websock')。这在windows安装的tomcat上运行良好,但在ubuntu安装上不起作用。我必须在javascript中显式地告诉它连接到,但在尝试连接到web套接字时会出现后续错误:
webSocket connection to 'ws://localhost:8080/websock/940/qdb1xkkp/websocket' failed: Error during WebSocket handshake: Unexpected response code: 404
我的问题是,在通过stomp连接到套接字之前,我必须获得正确的基本url:
var getUrl = window.location;
var baseUrl = getUrl .protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1];
$stomp.connect(baseUrl + '/websock', {})
正在查找我找到的堆栈跟踪:。。。这听起来很可能是
org.apache.tomcat.websocket
和javax.websocket
之间的版本/实现冲突。你是对的。我曾尝试添加javax.websocket,但它导致了更多的问题。问题的一部分是我的连接路径错误,但我仍然有问题。现在更新答案。
var getUrl = window.location;
var baseUrl = getUrl .protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1];
$stomp.connect(baseUrl + '/websock', {})