将 Websocket 与 Tomcat 一起使用
Posted
技术标签:
【中文标题】将 Websocket 与 Tomcat 一起使用【英文标题】:using Websockets with Tomcat 【发布时间】:2015-05-22 12:29:22 【问题描述】:我正在尝试使 this 示例工作
但是当我将war文件部署到Tomcat并启动时,无法建立连接。
在浏览器控制台中,我看到客户端尝试连接到http://localhost:8080/Spring4WebSocket/add/info
并接收404
,尽管在 start.jsp 中指定的连接 URL 是 /Spring4WebSocket/add(最后没有那个“/info”部分)。
为什么这个奇怪的“/info”后缀被添加到 url 中,我可以做些什么来改变它并让这个例子正常工作?
此解决方案对我没有帮助: SockJs - 'info' path not found
【问题讨论】:
你用的是什么版本的tomcat?你需要 7.0.52+ 版本为 7.0.59。 【参考方案1】:/info
URL 被 SockJS (see docs) 调用:
...在客户端启动会话之前。它用于检查服务器功能(websocket 支持、cookie 要求)并获取“origin”设置的值(当前未使用)。
我查看了您所遵循的示例,但没有发现任何问题。它紧跟 Spring 指南:Using WebSocket to build an interactive web application,所以它应该可以工作。
不过只有一个问题。您是否完全按照说明操作或从页面下载了 zip 文件,还是您自己创建的?您在此处的第一个 SockJS 请求中收到该错误:
var socket = new SockJS('/Spring4WebSocket/add');
您的应用程序是否也称为Spring4WebSocket
或其他名称?如果它被称为其他东西,请改用它:
var socket = new SockJS('/YourAppNameGoesHere/add');
【讨论】:
是的,这是我检查的第一件事。我的应用程序就是这样调用的。无论如何感谢您的回答。 @user2246018:我已经下载并安装了您发布的链接附带的项目,它可以正常工作。你检查过你的代码吗?有什么不同吗?您的WebAppInitializer.onStartup
方法是否被调用来加载 Spring 上下文?以上是关于将 Websocket 与 Tomcat 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
将 c++ wss 服务器与 websocket++ 或其他 c++ websocket lib 一起使用
如何将 .NET WebSocket 客户端与 NTLM 代理一起使用?